{"version":3,"file":"js/chunk-vendors.929e8d65.js","mappings":"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","sources":["webpack://web/./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://web/./node_modules/ansi-to-html/lib/ansi_to_html.js","webpack://web/./node_modules/axios/index.js","webpack://web/./node_modules/axios/lib/adapters/xhr.js","webpack://web/./node_modules/axios/lib/axios.js","webpack://web/./node_modules/axios/lib/cancel/Cancel.js","webpack://web/./node_modules/axios/lib/cancel/CancelToken.js","webpack://web/./node_modules/axios/lib/cancel/isCancel.js","webpack://web/./node_modules/axios/lib/core/Axios.js","webpack://web/./node_modules/axios/lib/core/InterceptorManager.js","webpack://web/./node_modules/axios/lib/core/buildFullPath.js","webpack://web/./node_modules/axios/lib/core/createError.js","webpack://web/./node_modules/axios/lib/core/dispatchRequest.js","webpack://web/./node_modules/axios/lib/core/enhanceError.js","webpack://web/./node_modules/axios/lib/core/mergeConfig.js","webpack://web/./node_modules/axios/lib/core/settle.js","webpack://web/./node_modules/axios/lib/core/transformData.js","webpack://web/./node_modules/axios/lib/defaults.js","webpack://web/./node_modules/axios/lib/helpers/bind.js","webpack://web/./node_modules/axios/lib/helpers/buildURL.js","webpack://web/./node_modules/axios/lib/helpers/combineURLs.js","webpack://web/./node_modules/axios/lib/helpers/cookies.js","webpack://web/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://web/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://web/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://web/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://web/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://web/./node_modules/axios/lib/helpers/spread.js","webpack://web/./node_modules/axios/lib/helpers/validator.js","webpack://web/./node_modules/axios/lib/utils.js","webpack://web/./node_modules/codemirror/addon/display/placeholder.js","webpack://web/./node_modules/codemirror/addon/lint/json-lint.js","webpack://web/./node_modules/codemirror/addon/mode/multiplex.js","webpack://web/./node_modules/codemirror/addon/mode/overlay.js","webpack://web/./node_modules/codemirror/addon/mode/simple.js","webpack://web/./node_modules/codemirror/lib/codemirror.js","webpack://web/./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack://web/./node_modules/codemirror/mode/css/css.js","webpack://web/./node_modules/codemirror/mode/handlebars/handlebars.js","webpack://web/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://web/./node_modules/codemirror/mode/javascript/javascript.js","webpack://web/./node_modules/codemirror/mode/pug/pug.js","webpack://web/./node_modules/codemirror/mode/sass/sass.js","webpack://web/./node_modules/codemirror/mode/stylus/stylus.js","webpack://web/./node_modules/codemirror/mode/vue/vue.js","webpack://web/./node_modules/codemirror/mode/xml/xml.js","webpack://web/./node_modules/core-js/internals/a-callable.js","webpack://web/./node_modules/core-js/internals/a-possible-prototype.js","webpack://web/./node_modules/core-js/internals/add-to-unscopables.js","webpack://web/./node_modules/core-js/internals/an-object.js","webpack://web/./node_modules/core-js/internals/array-includes.js","webpack://web/./node_modules/core-js/internals/classof-raw.js","webpack://web/./node_modules/core-js/internals/classof.js","webpack://web/./node_modules/core-js/internals/clear-error-stack.js","webpack://web/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://web/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://web/./node_modules/core-js/internals/create-property-descriptor.js","webpack://web/./node_modules/core-js/internals/define-built-in.js","webpack://web/./node_modules/core-js/internals/define-global-property.js","webpack://web/./node_modules/core-js/internals/descriptors.js","webpack://web/./node_modules/core-js/internals/document-create-element.js","webpack://web/./node_modules/core-js/internals/engine-user-agent.js","webpack://web/./node_modules/core-js/internals/engine-v8-version.js","webpack://web/./node_modules/core-js/internals/enum-bug-keys.js","webpack://web/./node_modules/core-js/internals/error-stack-installable.js","webpack://web/./node_modules/core-js/internals/export.js","webpack://web/./node_modules/core-js/internals/fails.js","webpack://web/./node_modules/core-js/internals/function-apply.js","webpack://web/./node_modules/core-js/internals/function-bind-native.js","webpack://web/./node_modules/core-js/internals/function-call.js","webpack://web/./node_modules/core-js/internals/function-name.js","webpack://web/./node_modules/core-js/internals/function-uncurry-this.js","webpack://web/./node_modules/core-js/internals/get-built-in.js","webpack://web/./node_modules/core-js/internals/get-method.js","webpack://web/./node_modules/core-js/internals/global.js","webpack://web/./node_modules/core-js/internals/has-own-property.js","webpack://web/./node_modules/core-js/internals/hidden-keys.js","webpack://web/./node_modules/core-js/internals/html.js","webpack://web/./node_modules/core-js/internals/ie8-dom-define.js","webpack://web/./node_modules/core-js/internals/indexed-object.js","webpack://web/./node_modules/core-js/internals/inherit-if-required.js","webpack://web/./node_modules/core-js/internals/inspect-source.js","webpack://web/./node_modules/core-js/internals/install-error-cause.js","webpack://web/./node_modules/core-js/internals/internal-state.js","webpack://web/./node_modules/core-js/internals/is-callable.js","webpack://web/./node_modules/core-js/internals/is-forced.js","webpack://web/./node_modules/core-js/internals/is-object.js","webpack://web/./node_modules/core-js/internals/is-pure.js","webpack://web/./node_modules/core-js/internals/is-symbol.js","webpack://web/./node_modules/core-js/internals/length-of-array-like.js","webpack://web/./node_modules/core-js/internals/make-built-in.js","webpack://web/./node_modules/core-js/internals/math-trunc.js","webpack://web/./node_modules/core-js/internals/native-symbol.js","webpack://web/./node_modules/core-js/internals/native-weak-map.js","webpack://web/./node_modules/core-js/internals/normalize-string-argument.js","webpack://web/./node_modules/core-js/internals/object-create.js","webpack://web/./node_modules/core-js/internals/object-define-properties.js","webpack://web/./node_modules/core-js/internals/object-define-property.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://web/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-keys-internal.js","webpack://web/./node_modules/core-js/internals/object-keys.js","webpack://web/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://web/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://web/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://web/./node_modules/core-js/internals/own-keys.js","webpack://web/./node_modules/core-js/internals/proxy-accessor.js","webpack://web/./node_modules/core-js/internals/require-object-coercible.js","webpack://web/./node_modules/core-js/internals/shared-key.js","webpack://web/./node_modules/core-js/internals/shared-store.js","webpack://web/./node_modules/core-js/internals/shared.js","webpack://web/./node_modules/core-js/internals/to-absolute-index.js","webpack://web/./node_modules/core-js/internals/to-indexed-object.js","webpack://web/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://web/./node_modules/core-js/internals/to-length.js","webpack://web/./node_modules/core-js/internals/to-object.js","webpack://web/./node_modules/core-js/internals/to-primitive.js","webpack://web/./node_modules/core-js/internals/to-property-key.js","webpack://web/./node_modules/core-js/internals/to-string-tag-support.js","webpack://web/./node_modules/core-js/internals/to-string.js","webpack://web/./node_modules/core-js/internals/try-to-string.js","webpack://web/./node_modules/core-js/internals/uid.js","webpack://web/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://web/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://web/./node_modules/core-js/internals/well-known-symbol.js","webpack://web/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://web/./node_modules/core-js/modules/es.array.includes.js","webpack://web/./node_modules/core-js/modules/es.error.cause.js","webpack://web/./node_modules/entities/lib/decode.js","webpack://web/./node_modules/entities/lib/decode_codepoint.js","webpack://web/./node_modules/entities/lib/encode.js","webpack://web/./node_modules/entities/lib/index.js","webpack://web/./node_modules/moment/locale/af.js","webpack://web/./node_modules/moment/locale/ar-dz.js","webpack://web/./node_modules/moment/locale/ar-kw.js","webpack://web/./node_modules/moment/locale/ar-ly.js","webpack://web/./node_modules/moment/locale/ar-ma.js","webpack://web/./node_modules/moment/locale/ar-sa.js","webpack://web/./node_modules/moment/locale/ar-tn.js","webpack://web/./node_modules/moment/locale/ar.js","webpack://web/./node_modules/moment/locale/az.js","webpack://web/./node_modules/moment/locale/be.js","webpack://web/./node_modules/moment/locale/bg.js","webpack://web/./node_modules/moment/locale/bm.js","webpack://web/./node_modules/moment/locale/bn-bd.js","webpack://web/./node_modules/moment/locale/bn.js","webpack://web/./node_modules/moment/locale/bo.js","webpack://web/./node_modules/moment/locale/br.js","webpack://web/./node_modules/moment/locale/bs.js","webpack://web/./node_modules/moment/locale/ca.js","webpack://web/./node_modules/moment/locale/cs.js","webpack://web/./node_modules/moment/locale/cv.js","webpack://web/./node_modules/moment/locale/cy.js","webpack://web/./node_modules/moment/locale/da.js","webpack://web/./node_modules/moment/locale/de-at.js","webpack://web/./node_modules/moment/locale/de-ch.js","webpack://web/./node_modules/moment/locale/de.js","webpack://web/./node_modules/moment/locale/dv.js","webpack://web/./node_modules/moment/locale/el.js","webpack://web/./node_modules/moment/locale/en-au.js","webpack://web/./node_modules/moment/locale/en-ca.js","webpack://web/./node_modules/moment/locale/en-gb.js","webpack://web/./node_modules/moment/locale/en-ie.js","webpack://web/./node_modules/moment/locale/en-il.js","webpack://web/./node_modules/moment/locale/en-in.js","webpack://web/./node_modules/moment/locale/en-nz.js","webpack://web/./node_modules/moment/locale/en-sg.js","webpack://web/./node_modules/moment/locale/eo.js","webpack://web/./node_modules/moment/locale/es-do.js","webpack://web/./node_modules/moment/locale/es-mx.js","webpack://web/./node_modules/moment/locale/es-us.js","webpack://web/./node_modules/moment/locale/es.js","webpack://web/./node_modules/moment/locale/et.js","webpack://web/./node_modules/moment/locale/eu.js","webpack://web/./node_modules/moment/locale/fa.js","webpack://web/./node_modules/moment/locale/fi.js","webpack://web/./node_modules/moment/locale/fil.js","webpack://web/./node_modules/moment/locale/fo.js","webpack://web/./node_modules/moment/locale/fr-ca.js","webpack://web/./node_modules/moment/locale/fr-ch.js","webpack://web/./node_modules/moment/locale/fr.js","webpack://web/./node_modules/moment/locale/fy.js","webpack://web/./node_modules/moment/locale/ga.js","webpack://web/./node_modules/moment/locale/gd.js","webpack://web/./node_modules/moment/locale/gl.js","webpack://web/./node_modules/moment/locale/gom-deva.js","webpack://web/./node_modules/moment/locale/gom-latn.js","webpack://web/./node_modules/moment/locale/gu.js","webpack://web/./node_modules/moment/locale/he.js","webpack://web/./node_modules/moment/locale/hi.js","webpack://web/./node_modules/moment/locale/hr.js","webpack://web/./node_modules/moment/locale/hu.js","webpack://web/./node_modules/moment/locale/hy-am.js","webpack://web/./node_modules/moment/locale/id.js","webpack://web/./node_modules/moment/locale/is.js","webpack://web/./node_modules/moment/locale/it-ch.js","webpack://web/./node_modules/moment/locale/it.js","webpack://web/./node_modules/moment/locale/ja.js","webpack://web/./node_modules/moment/locale/jv.js","webpack://web/./node_modules/moment/locale/ka.js","webpack://web/./node_modules/moment/locale/kk.js","webpack://web/./node_modules/moment/locale/km.js","webpack://web/./node_modules/moment/locale/kn.js","webpack://web/./node_modules/moment/locale/ko.js","webpack://web/./node_modules/moment/locale/ku.js","webpack://web/./node_modules/moment/locale/ky.js","webpack://web/./node_modules/moment/locale/lb.js","webpack://web/./node_modules/moment/locale/lo.js","webpack://web/./node_modules/moment/locale/lt.js","webpack://web/./node_modules/moment/locale/lv.js","webpack://web/./node_modules/moment/locale/me.js","webpack://web/./node_modules/moment/locale/mi.js","webpack://web/./node_modules/moment/locale/mk.js","webpack://web/./node_modules/moment/locale/ml.js","webpack://web/./node_modules/moment/locale/mn.js","webpack://web/./node_modules/moment/locale/mr.js","webpack://web/./node_modules/moment/locale/ms-my.js","webpack://web/./node_modules/moment/locale/ms.js","webpack://web/./node_modules/moment/locale/mt.js","webpack://web/./node_modules/moment/locale/my.js","webpack://web/./node_modules/moment/locale/nb.js","webpack://web/./node_modules/moment/locale/ne.js","webpack://web/./node_modules/moment/locale/nl-be.js","webpack://web/./node_modules/moment/locale/nl.js","webpack://web/./node_modules/moment/locale/nn.js","webpack://web/./node_modules/moment/locale/oc-lnc.js","webpack://web/./node_modules/moment/locale/pa-in.js","webpack://web/./node_modules/moment/locale/pl.js","webpack://web/./node_modules/moment/locale/pt-br.js","webpack://web/./node_modules/moment/locale/pt.js","webpack://web/./node_modules/moment/locale/ro.js","webpack://web/./node_modules/moment/locale/ru.js","webpack://web/./node_modules/moment/locale/sd.js","webpack://web/./node_modules/moment/locale/se.js","webpack://web/./node_modules/moment/locale/si.js","webpack://web/./node_modules/moment/locale/sk.js","webpack://web/./node_modules/moment/locale/sl.js","webpack://web/./node_modules/moment/locale/sq.js","webpack://web/./node_modules/moment/locale/sr-cyrl.js","webpack://web/./node_modules/moment/locale/sr.js","webpack://web/./node_modules/moment/locale/ss.js","webpack://web/./node_modules/moment/locale/sv.js","webpack://web/./node_modules/moment/locale/sw.js","webpack://web/./node_modules/moment/locale/ta.js","webpack://web/./node_modules/moment/locale/te.js","webpack://web/./node_modules/moment/locale/tet.js","webpack://web/./node_modules/moment/locale/tg.js","webpack://web/./node_modules/moment/locale/th.js","webpack://web/./node_modules/moment/locale/tk.js","webpack://web/./node_modules/moment/locale/tl-ph.js","webpack://web/./node_modules/moment/locale/tlh.js","webpack://web/./node_modules/moment/locale/tr.js","webpack://web/./node_modules/moment/locale/tzl.js","webpack://web/./node_modules/moment/locale/tzm-latn.js","webpack://web/./node_modules/moment/locale/tzm.js","webpack://web/./node_modules/moment/locale/ug-cn.js","webpack://web/./node_modules/moment/locale/uk.js","webpack://web/./node_modules/moment/locale/ur.js","webpack://web/./node_modules/moment/locale/uz-latn.js","webpack://web/./node_modules/moment/locale/uz.js","webpack://web/./node_modules/moment/locale/vi.js","webpack://web/./node_modules/moment/locale/x-pseudo.js","webpack://web/./node_modules/moment/locale/yo.js","webpack://web/./node_modules/moment/locale/zh-cn.js","webpack://web/./node_modules/moment/locale/zh-hk.js","webpack://web/./node_modules/moment/locale/zh-mo.js","webpack://web/./node_modules/moment/locale/zh-tw.js","webpack://web/./node_modules/moment/moment.js","webpack://web/./node_modules/sortablejs/modular/sortable.esm.js","webpack://web/../../../src/mixins/transitionable/index.ts","webpack://web/../../../src/components/VAlert/VAlert.ts","webpack://web/../../../src/components/VApp/VApp.ts","webpack://web/../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack://web/../../../src/components/VAutocomplete/VAutocomplete.ts","webpack://web/../../../src/components/VAvatar/VAvatar.ts","webpack://web/../../../src/components/VBottomSheet/VBottomSheet.ts","webpack://web/../../../src/components/VProgressCircular/index.ts","webpack://web/../../../src/components/VBtn/VBtn.ts","webpack://web/../../../src/components/VBtn/index.ts","webpack://web/../../../src/components/VCard/VCard.ts","webpack://web/../../../src/components/VCard/index.ts","webpack://web/../../../src/components/VCheckbox/VCheckbox.ts","webpack://web/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://web/../../../src/components/VChip/VChip.ts","webpack://web/../../../src/components/VChip/index.ts","webpack://web/../../../src/components/VChipGroup/VChipGroup.ts","webpack://web/../../../src/components/VData/VData.ts","webpack://web/../../../src/components/VDataIterator/VDataFooter.ts","webpack://web/../../../src/components/VDataIterator/VDataIterator.ts","webpack://web/../../../../src/components/VDataTable/mixins/header.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack://web/../../src/util/dedupeModelListeners.ts","webpack://web/../../src/util/rebuildFunctionalSlots.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeader.ts","webpack://web/../../../src/components/VDataTable/Row.ts","webpack://web/../../../src/components/VDataTable/RowGroup.ts","webpack://web/../../../src/components/VDataTable/VSimpleTable.ts","webpack://web/../../../src/components/VDataTable/MobileRow.ts","webpack://web/../../../src/components/VDataTable/VDataTable.ts","webpack://web/../../../src/components/VDialog/VDialog.ts","webpack://web/../../../src/components/VForm/VForm.ts","webpack://web/../../../src/components/VGrid/VCol.ts","webpack://web/../../../src/components/VGrid/grid.ts","webpack://web/../../../src/components/VGrid/VContainer.ts","webpack://web/../../../src/components/VGrid/VRow.ts","webpack://web/../../../src/components/VGrid/VSpacer.ts","webpack://web/../../../src/components/VIcon/VIcon.ts","webpack://web/../../../src/components/VIcon/index.ts","webpack://web/../../../src/components/VResponsive/VResponsive.ts","webpack://web/../../../src/components/VResponsive/index.ts","webpack://web/../../../src/components/VImg/VImg.ts","webpack://web/../../../src/components/VMessages/VMessages.ts","webpack://web/../../../src/components/VMessages/index.ts","webpack://web/../../../src/components/VInput/VInput.ts","webpack://web/../../../src/components/VInput/index.ts","webpack://web/../../../src/components/VItemGroup/VItemGroup.ts","webpack://web/../../../src/components/VLabel/VLabel.ts","webpack://web/../../../src/components/VLabel/index.ts","webpack://web/../../../src/components/VList/VList.ts","webpack://web/../../../src/components/VList/VListItem.ts","webpack://web/../../../src/components/VList/VListItemAction.ts","webpack://web/../../../src/components/VList/VListItemIcon.ts","webpack://web/../../../src/components/VList/VListGroup.ts","webpack://web/../../../src/components/VList/VListItemGroup.ts","webpack://web/../../../src/components/VAvatar/index.ts","webpack://web/../../../src/components/VList/VListItemAvatar.ts","webpack://web/../../../src/components/VList/index.ts","webpack://web/../../../src/components/VMain/VMain.ts","webpack://web/../../../src/components/VMenu/VMenu.ts","webpack://web/../../../src/mixins/applicationable/index.ts","webpack://web/../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack://web/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://web/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://web/../../../src/components/VMenu/index.ts","webpack://web/../../../src/components/VDivider/VDivider.ts","webpack://web/../../../src/components/VDivider/index.ts","webpack://web/../../../src/components/VSubheader/index.ts","webpack://web/../../../src/components/VSelect/VSelectList.ts","webpack://web/../../../src/mixins/filterable/index.ts","webpack://web/../../../src/components/VSelect/VSelect.ts","webpack://web/../../../src/components/VSheet/VSheet.ts","webpack://web/../../../src/components/VSheet/index.ts","webpack://web/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://web/../../../src/components/VSnackbar/VSnackbar.ts","webpack://web/../../../src/components/VSubheader/VSubheader.ts","webpack://web/../../../src/components/VSwitch/VSwitch.ts","webpack://web/../../../src/components/VTabs/VTab.ts","webpack://web/../../../src/components/VTabs/VTabsBar.ts","webpack://web/../../../src/components/VWindow/VWindow.ts","webpack://web/../../../src/components/VTabs/VTabsItems.ts","webpack://web/../../../src/components/VTabs/VTabsSlider.ts","webpack://web/../../../src/components/VTabs/VTabs.ts","webpack://web/../../../src/components/VCounter/VCounter.ts","webpack://web/../../../src/components/VCounter/index.ts","webpack://web/../../../src/mixins/intersectable/index.ts","webpack://web/../../../src/components/VTextField/VTextField.ts","webpack://web/../../../src/components/VTextarea/VTextarea.ts","webpack://web/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://web/../../../src/components/VToolbar/VToolbar.ts","webpack://web/../../../src/components/VToolbar/index.ts","webpack://web/../../../src/components/VTooltip/VTooltip.ts","webpack://web/../../../src/components/transitions/createTransition.ts","webpack://web/../../../src/components/transitions/expand-transition.ts","webpack://web/../../../src/components/transitions/index.ts","webpack://web/../../../src/directives/click-outside/index.ts","webpack://web/../../../src/directives/intersect/index.ts","webpack://web/../../../src/directives/resize/index.ts","webpack://web/../../../src/directives/ripple/index.ts","webpack://web/../../../src/directives/touch/index.ts","webpack://web/../src/install.ts","webpack://web/../../src/locale/en.ts","webpack://web/../../../src/presets/default/index.ts","webpack://web/../../../src/services/presets/index.ts","webpack://web/../../../src/services/application/index.ts","webpack://web/../../../src/services/breakpoint/index.ts","webpack://web/../../../../src/services/icons/presets/mdi-svg.ts","webpack://web/../../../../src/services/icons/presets/md.ts","webpack://web/../../../../src/services/icons/presets/mdi.ts","webpack://web/../../../../src/services/icons/presets/fa.ts","webpack://web/../../../../src/services/icons/presets/fa4.ts","webpack://web/../../../../src/services/icons/presets/fa-svg.ts","webpack://web/../../../../src/services/icons/presets/index.ts","webpack://web/../../../src/services/icons/index.ts","webpack://web/../../../src/services/lang/index.ts","webpack://web/../../../src/util/color/transformSRGB.ts","webpack://web/../../../src/util/color/transformCIELAB.ts","webpack://web/../../../src/services/theme/utils.ts","webpack://web/../../../src/services/theme/index.ts","webpack://web/../src/framework.ts","webpack://web/../../../src/mixins/activatable/index.ts","webpack://web/../../../src/mixins/binds-attrs/index.ts","webpack://web/../../../src/mixins/bootable/index.ts","webpack://web/../../../src/mixins/colorable/index.ts","webpack://web/../../../src/mixins/comparable/index.ts","webpack://web/../../../src/mixins/delayable/index.ts","webpack://web/../../../src/mixins/dependent/index.ts","webpack://web/../../../src/mixins/detachable/index.ts","webpack://web/../../../src/mixins/elevatable/index.ts","webpack://web/../../../src/mixins/groupable/index.ts","webpack://web/../../../src/components/VProgressLinear/index.ts","webpack://web/../../../src/mixins/loadable/index.ts","webpack://web/../../../src/mixins/measurable/index.ts","webpack://web/../../../src/mixins/menuable/index.ts","webpack://web/../../../src/mixins/mobile/index.ts","webpack://web/../../../src/components/VOverlay/VOverlay.ts","webpack://web/../../../src/components/VOverlay/index.ts","webpack://web/../../../src/mixins/overlayable/index.ts","webpack://web/../../../src/mixins/positionable/index.ts","webpack://web/../../../src/mixins/proxyable/index.ts","webpack://web/../../../src/mixins/registrable/index.ts","webpack://web/../../../src/mixins/returnable/index.ts","webpack://web/../../../src/mixins/roundable/index.ts","webpack://web/../../../src/mixins/routable/index.ts","webpack://web/../../../src/mixins/rippleable/index.ts","webpack://web/../../../src/mixins/selectable/index.ts","webpack://web/../../../src/mixins/sizeable/index.ts","webpack://web/../../../src/mixins/ssr-bootable/index.ts","webpack://web/../../../src/mixins/stackable/index.ts","webpack://web/../../../src/mixins/themeable/index.ts","webpack://web/../../../src/mixins/toggleable/index.ts","webpack://web/../../../src/mixins/validatable/index.ts","webpack://web/../../../src/services/goto/easing-patterns.ts","webpack://web/../../../src/services/goto/util.ts","webpack://web/../../../src/services/goto/index.ts","webpack://web/../../../src/services/service/index.ts","webpack://web/../../src/util/colorUtils.ts","webpack://web/../../src/util/console.ts","webpack://web/../../src/util/dom.ts","webpack://web/../../src/util/helpers.ts","webpack://web/../../src/util/mergeData.ts","webpack://web/../../src/util/mixins.ts","webpack://web/./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack://web/./node_modules/vue-router/dist/vue-router.esm.js","webpack://web/./node_modules/vue/dist/vue.runtime.esm.js","webpack://web/./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack://web/./node_modules/vuetify-loader/lib/runtime/installComponents.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '
';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `
`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Depends on jsonlint.js from https://github.com/zaach/jsonlint\n\n// declare global: jsonlint\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"lint\", \"json\", function(text) {\n var found = [];\n if (!window.jsonlint) {\n if (window.console) {\n window.console.error(\"Error: window.jsonlint not defined, CodeMirror JSON linting cannot run.\");\n }\n return found;\n }\n // for jsonlint's web dist jsonlint is exported as an object with a single property parser, of which parseError\n // is a subproperty\n var jsonlint = window.jsonlint.parser || window.jsonlint\n jsonlint.parseError = function(str, hash) {\n var loc = hash.loc;\n found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),\n to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),\n message: str});\n };\n try { jsonlint.parse(text); }\n catch(e) {}\n return found;\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n // Others should be {open, close, mode [, delimStyle] [, innerStyle] [, parseDelimiters]} objects\n var others = Array.prototype.slice.call(arguments, 1);\n\n function indexOf(string, pattern, from, returnEnd) {\n if (typeof pattern == \"string\") {\n var found = string.indexOf(pattern, from);\n return returnEnd && found > -1 ? found + pattern.length : found;\n }\n var m = pattern.exec(from ? string.slice(from) : string);\n return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;\n }\n\n return {\n startState: function() {\n return {\n outer: CodeMirror.startState(outer),\n innerActive: null,\n inner: null,\n startingInner: false\n };\n },\n\n copyState: function(state) {\n return {\n outer: CodeMirror.copyState(outer, state.outer),\n innerActive: state.innerActive,\n inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner),\n startingInner: state.startingInner\n };\n },\n\n token: function(stream, state) {\n if (!state.innerActive) {\n var cutOff = Infinity, oldContent = stream.string;\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n var found = indexOf(oldContent, other.open, stream.pos);\n if (found == stream.pos) {\n if (!other.parseDelimiters) stream.match(other.open);\n state.startingInner = !!other.parseDelimiters\n state.innerActive = other;\n\n // Get the outer indent, making sure to handle CodeMirror.Pass\n var outerIndent = 0;\n if (outer.indent) {\n var possibleOuterIndent = outer.indent(state.outer, \"\", \"\");\n if (possibleOuterIndent !== CodeMirror.Pass) outerIndent = possibleOuterIndent;\n }\n\n state.inner = CodeMirror.startState(other.mode, outerIndent);\n return other.delimStyle && (other.delimStyle + \" \" + other.delimStyle + \"-open\");\n } else if (found != -1 && found < cutOff) {\n cutOff = found;\n }\n }\n if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n var outerToken = outer.token(stream, state.outer);\n if (cutOff != Infinity) stream.string = oldContent;\n return outerToken;\n } else {\n var curInner = state.innerActive, oldContent = stream.string;\n if (!curInner.close && stream.sol()) {\n state.innerActive = state.inner = null;\n return this.token(stream, state);\n }\n var found = curInner.close && !state.startingInner ?\n indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1;\n if (found == stream.pos && !curInner.parseDelimiters) {\n stream.match(curInner.close);\n state.innerActive = state.inner = null;\n return curInner.delimStyle && (curInner.delimStyle + \" \" + curInner.delimStyle + \"-close\");\n }\n if (found > -1) stream.string = oldContent.slice(0, found);\n var innerToken = curInner.mode.token(stream, state.inner);\n if (found > -1) stream.string = oldContent;\n else if (stream.pos > stream.start) state.startingInner = false\n\n if (found == stream.pos && curInner.parseDelimiters)\n state.innerActive = state.inner = null;\n\n if (curInner.innerStyle) {\n if (innerToken) innerToken = innerToken + \" \" + curInner.innerStyle;\n else innerToken = curInner.innerStyle;\n }\n\n return innerToken;\n }\n },\n\n indent: function(state, textAfter, line) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (!mode.indent) return CodeMirror.Pass;\n return mode.indent(state.innerActive ? state.inner : state.outer, textAfter, line);\n },\n\n blankLine: function(state) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (mode.blankLine) {\n mode.blankLine(state.innerActive ? state.inner : state.outer);\n }\n if (!state.innerActive) {\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n if (other.open === \"\\n\") {\n state.innerActive = other;\n state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\", \"\") : 0);\n }\n }\n } else if (state.innerActive.close === \"\\n\") {\n state.innerActive = state.inner = null;\n }\n },\n\n electricChars: outer.electricChars,\n\n innerMode: function(state) {\n return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n if (val.unicode) flags += \"u\"\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n (state.pending || (state.pending = [])).push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version >= 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.6\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle number literals\n if (stream.match(/^-?[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\/\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol()) {\n return outclass;\n }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match('+#{', false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match('@extend')){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b(?!-)/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match('.');\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n // Note, \"url-prefix\" should precede \"url\" in order to match correctly in documentTypesRegexp\n var documentTypes_ = [\"domain\", \"regexp\", \"url-prefix\", \"url\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\",\"dynamic-range\",\"video-dynamic-range\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"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\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"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\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"conic-gradient\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"high\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-play-button\",\"media-slider\",\"media-sliderthumb\",\"media-volume-slider\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeating-conic-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"standard\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function (mod) {\n \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n defineProperty(value, 'name', { value: name, configurable: true });\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\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:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.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 (Libya) [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:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.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:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.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:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.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:\n '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:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.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:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.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:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.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:\n 'ཟླ་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:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.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 =\n /^(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 =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(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:\n '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:\n '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:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n '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 = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\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 =\n /^(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:\n /^(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:\n /^(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:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.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:\n '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:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n '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:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n '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:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n '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:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.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 =\n '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 =\n /^(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:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(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 =\n '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 =\n /^(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:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(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 =\n '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 =\n /^(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:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(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 =\n '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 =\n /^(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:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(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:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n '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:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n '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:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\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 =\n '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:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n '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:\n '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:\n '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:\n '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 =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(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:\n '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 =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\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:\n '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:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.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:\n '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:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\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:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.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:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.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: '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:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/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:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\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:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/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:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n '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 =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\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:\n '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:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.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:\n '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:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.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(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\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:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.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:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.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 \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:\n 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split(\n '_'\n ),\n weekdaysShort:\n 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.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 /ئێواره/.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:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n '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:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.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:\n '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:\n '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:\n '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č : 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:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\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 : 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:\n '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:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.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:\n '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:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.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:\n '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:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\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:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.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 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\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 =\n /^(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:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(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:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\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 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\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 =\n /^(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:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(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:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\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:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\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:\n '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:\n '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:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.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 =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n '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:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\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:\n '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:\n '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:\n '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:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.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:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/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:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n '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:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.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 =\n '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:\n '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ć : https://github.com/milan-j\n//! author : Stefan Crnjaković : 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 d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\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: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\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ć : https://github.com/milan-j\n//! author : Stefan Crnjaković : 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', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\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:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\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: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\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 : 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:\n '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:\n '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:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.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:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.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:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.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:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.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:\n '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:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.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: '[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_Pzt_Sal_Çar_Per_Cum_Cmt'.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:\n '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:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.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:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.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:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.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:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.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:\n '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:\n '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:\n '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:\n '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ẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_À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: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdú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.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n 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,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n 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 =\n /(\\[[^\\[]*\\])|(\\\\)?([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 prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n 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 =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\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(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n 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 =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\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 isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\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 isLocaleNameSane(name)\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 =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\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 tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._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 orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$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 =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$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 propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$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 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n 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(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\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.3';\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', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\n },\n})\n","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import './VBottomSheet.sass'\n\n// Extensions\nimport VDialog from '../VDialog/VDialog'\n\n/* @vue/component */\nexport default VDialog.extend({\n name: 'v-bottom-sheet',\n\n props: {\n inset: Boolean,\n maxWidth: [String, Number],\n transition: {\n type: String,\n default: 'bottom-sheet-transition',\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VDialog.options.computed.classes.call(this),\n 'v-bottom-sheet': true,\n 'v-bottom-sheet--inset': this.inset,\n }\n },\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport './VChipGroup.sass'\n\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n BaseSlideGroup,\n Colorable\n).extend({\n name: 'v-chip-group',\n\n provide () {\n return {\n chipGroup: this,\n }\n },\n\n props: {\n column: Boolean,\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-chip-group': true,\n 'v-chip-group--column': this.column,\n }\n },\n },\n\n watch: {\n column (val) {\n if (val) this.scrollOffset = 0\n\n this.$nextTick(this.onResize)\n },\n },\n\n methods: {\n genData () {\n return this.setTextColor(this.color, {\n ...BaseSlideGroup.options.methods.genData.call(this),\n })\n },\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => val === value)\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = value === this.internalValue\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img(props)\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, this.$slots.default)\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) || '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try ''`, this)\n }\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(this.startTransition)\n },\n deactivate () {\n this.runDelay('close')\n },\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n if (this.openOnFocus) {\n listeners.focus = (e: Event) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.blur = (e: Event) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n listeners.keydown = (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.esc) {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n return listeners\n },\n genActivatorAttributes () {\n return {\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genTransition () {\n const content = this.genContent()\n\n if (!this.computedTransition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [content])\n },\n genContent () {\n return this.$createElement(\n 'div',\n this.setBackgroundColor(this.color, {\n staticClass: 'v-tooltip__content',\n class: {\n [this.contentClass]: true,\n menuable__content__active: this.isActive,\n 'v-tooltip__content--fixed': this.activatorFixed,\n },\n style: this.styles,\n attrs: this.getScopeIdAttrs(),\n directives: [{\n name: 'show',\n value: this.isContentActive,\n }],\n ref: 'content',\n }),\n this.getContentSlot()\n )\n },\n },\n\n render (h): VNode {\n return h(this.tag, {\n staticClass: 'v-tooltip',\n class: this.classes,\n }, [\n this.showLazyContent(() => [this.genTransition()]),\n this.genActivator(),\n ])\n },\n})\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding, vnode)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","import OurVue, { VueConstructor } from 'vue'\nimport { VuetifyUseOptions } from 'vuetify/types'\nimport { consoleError } from './util/console'\n\nexport function install (Vue: VueConstructor, args: VuetifyUseOptions = {}) {\n if ((install as any).installed) return\n (install as any).installed = true\n\n if (OurVue !== Vue) {\n consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`)\n }\n\n const components = args.components || {}\n const directives = args.directives || {}\n\n for (const name in directives) {\n const directive = directives[name]\n\n Vue.directive(name, directive)\n }\n\n (function registerComponents (components: any) {\n if (components) {\n for (const key in components) {\n const component = components[key]\n if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n Vue.component(key, component as typeof Vue)\n }\n }\n return true\n }\n return false\n })(components)\n\n // Used to avoid multiple mixins being setup\n // when in dev mode and hot module reload\n // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n if (Vue.$_vuetify_installed) return\n Vue.$_vuetify_installed = true\n\n Vue.mixin({\n beforeCreate () {\n const options = this.$options as any\n\n if (options.vuetify) {\n options.vuetify.init(this, this.$ssrContext)\n this.$vuetify = Vue.observable(options.vuetify.framework)\n } else {\n this.$vuetify = (options.parent && options.parent.$vuetify) || this\n }\n },\n beforeMount () {\n // @ts-ignore\n if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n // @ts-ignore\n this.$vuetify.isHydrating = true\n // @ts-ignore\n this.$vuetify.breakpoint.update(true)\n }\n },\n mounted () {\n // @ts-ignore\n if (this.$options.vuetify && this.$vuetify.isHydrating) {\n // @ts-ignore\n this.$vuetify.isHydrating = false\n // @ts-ignore\n this.$vuetify.breakpoint.update()\n }\n },\n })\n}\n","export default {\n badge: 'Badge',\n close: 'Close',\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n datePicker: {\n itemsSelected: '{0} selected',\n nextMonthAriaLabel: 'Next month',\n nextYearAriaLabel: 'Next year',\n prevMonthAriaLabel: 'Previous month',\n prevYearAriaLabel: 'Previous year',\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Goto Page {0}',\n currentPage: 'Current Page, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Rating {0} of {1}',\n },\n },\n}\n","// Styles\nimport '../../styles/main.sass'\n\n// Locale\nimport { en } from '../../locale'\n\n// Icons\n// TODO: Enable for v3\n// import mdi from '../../services/icons/presets/mdi'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\n\nexport const preset: VuetifyPreset = {\n breakpoint: {\n // TODO: update to MD2 spec in v3 - 1280\n mobileBreakpoint: 1264,\n scrollBarWidth: 16,\n thresholds: {\n xs: 600,\n sm: 960,\n md: 1280,\n lg: 1920,\n },\n },\n icons: {\n // TODO: remove v3\n iconfont: 'mdi',\n values: {},\n },\n lang: {\n current: 'en',\n locales: { en },\n // Default translator exists in lang service\n t: undefined as any,\n },\n rtl: false,\n theme: {\n dark: false,\n default: 'light',\n disable: false,\n options: {\n cspNonce: undefined,\n customProperties: undefined,\n minifyTheme: undefined,\n themeCache: undefined,\n variations: true,\n },\n themes: {\n light: {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n dark: {\n primary: '#2196F3',\n secondary: '#424242',\n accent: '#FF4081',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n },\n },\n}\n","// Preset\nimport { preset as Preset } from '../../presets/default'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport Vuetify from 'vuetify/types'\nimport { Service } from '../service'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\n\nexport class Presets extends Service {\n static property: 'presets' = 'presets'\n\n constructor (\n parentPreset: Partial,\n parent: Vuetify,\n ) {\n super()\n\n // The default preset\n const defaultPreset = mergeDeep({}, Preset)\n // The user provided preset\n const { userPreset } = parent\n // The user provided global preset\n const {\n preset: globalPreset = {},\n ...preset\n } = userPreset\n\n if (globalPreset.preset != null) {\n consoleWarn('Global presets do not support the **preset** option, it can be safely omitted')\n }\n\n parent.preset = mergeDeep(\n mergeDeep(defaultPreset, globalPreset),\n preset\n ) as VuetifyPreset\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { TargetPropValues, TargetProp, Application as IApplication } from 'vuetify/types/services/application'\n\nexport class Application extends Service implements IApplication {\n static property: 'application' = 'application'\n\n bar = 0\n\n top = 0\n\n left = 0\n\n insetFooter = 0\n\n right = 0\n\n bottom = 0\n\n footer = 0\n\n application: Dictionary = {\n bar: {},\n top: {},\n left: {},\n insetFooter: {},\n right: {},\n bottom: {},\n footer: {},\n }\n\n register (\n uid: number,\n location: TargetProp,\n size: number\n ) {\n this.application[location][uid] = size\n\n this.update(location)\n }\n\n unregister (uid: number, location: TargetProp) {\n if (this.application[location][uid] == null) return\n\n delete this.application[location][uid]\n this.update(location)\n }\n\n update (location: TargetProp) {\n this[location] = Object.values(this.application[location])\n .reduce((acc: number, cur: number): number => (acc + cur), 0)\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Breakpoint as IBreakpoint } from 'vuetify/types/services/breakpoint'\n\nexport class Breakpoint extends Service implements IBreakpoint {\n public static property: 'breakpoint' = 'breakpoint'\n\n // Public\n public xs = false\n\n public sm = false\n\n public md = false\n\n public lg = false\n\n public xl = false\n\n public xsOnly = false\n\n public smOnly = false\n\n public smAndDown = false\n\n public smAndUp = false\n\n public mdOnly = false\n\n public mdAndDown = false\n\n public mdAndUp = false\n\n public lgOnly = false\n\n public lgAndDown = false\n\n public lgAndUp = false\n\n public xlOnly = false\n\n // Value is xs to match v2.x functionality\n public name: IBreakpoint['name'] = 'xs'\n\n public height = 0\n\n public width = 0\n\n // TODO: Add functionality to detect this dynamically in v3\n // Value is true to match v2.x functionality\n public mobile = true\n\n public mobileBreakpoint: IBreakpoint['mobileBreakpoint']\n\n public thresholds: IBreakpoint['thresholds']\n\n public scrollBarWidth: IBreakpoint['scrollBarWidth']\n\n private resizeTimeout = 0\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n mobileBreakpoint,\n scrollBarWidth,\n thresholds,\n } = preset[Breakpoint.property]\n\n this.mobileBreakpoint = mobileBreakpoint\n this.scrollBarWidth = scrollBarWidth\n this.thresholds = thresholds\n }\n\n public init () {\n this.update()\n\n /* istanbul ignore if */\n if (typeof window === 'undefined') return\n\n window.addEventListener(\n 'resize',\n this.onResize.bind(this),\n { passive: true }\n )\n }\n\n /* eslint-disable-next-line max-statements */\n public update (ssr = false) {\n const height = ssr ? 0 : this.getClientHeight()\n const width = ssr ? 0 : this.getClientWidth()\n\n const xs = width < this.thresholds.xs\n const sm = width < this.thresholds.sm && !xs\n const md = width < (this.thresholds.md - this.scrollBarWidth) && !(sm || xs)\n const lg = width < (this.thresholds.lg - this.scrollBarWidth) && !(md || sm || xs)\n const xl = width >= (this.thresholds.lg - this.scrollBarWidth)\n\n this.height = height\n this.width = width\n\n this.xs = xs\n this.sm = sm\n this.md = md\n this.lg = lg\n this.xl = xl\n\n this.xsOnly = xs\n this.smOnly = sm\n this.smAndDown = (xs || sm) && !(md || lg || xl)\n this.smAndUp = !xs && (sm || md || lg || xl)\n this.mdOnly = md\n this.mdAndDown = (xs || sm || md) && !(lg || xl)\n this.mdAndUp = !(xs || sm) && (md || lg || xl)\n this.lgOnly = lg\n this.lgAndDown = (xs || sm || md || lg) && !xl\n this.lgAndUp = !(xs || sm || md) && (lg || xl)\n this.xlOnly = xl\n\n switch (true) {\n case (xs):\n this.name = 'xs'\n break\n case (sm):\n this.name = 'sm'\n break\n case (md):\n this.name = 'md'\n break\n case (lg):\n this.name = 'lg'\n break\n default:\n this.name = 'xl'\n break\n }\n\n if (typeof this.mobileBreakpoint === 'number') {\n this.mobile = width < parseInt(this.mobileBreakpoint, 10)\n\n return\n }\n\n const breakpoints = {\n xs: 0,\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n } as const\n\n const current = breakpoints[this.name]\n const max = breakpoints[this.mobileBreakpoint]\n\n this.mobile = current <= max\n }\n\n private onResize () {\n clearTimeout(this.resizeTimeout)\n\n // Added debounce to match what\n // v-resize used to do but was\n // removed due to a memory leak\n // https://github.com/vuetifyjs/vuetify/pull/2997\n this.resizeTimeout = window.setTimeout(this.update.bind(this), 200)\n }\n\n // Cross-browser support as described in:\n // https://stackoverflow.com/questions/1248081\n private getClientWidth () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientWidth,\n window.innerWidth || 0\n )\n }\n\n private getClientHeight () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientHeight,\n window.innerHeight || 0\n )\n }\n}\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z', // delete (e.g. v-chip close)\n clear: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n success: 'M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z',\n info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2ZM13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n warning: 'M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n error: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z', // for carousel\n sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n subgroup: 'M7,10L12,15L17,10H7Z',\n dropdown: 'M7,10L12,15L17,10H7Z',\n radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n minus: 'M19,13H5V11H19V13Z',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'check',\n cancel: 'cancel',\n close: 'close',\n delete: 'cancel', // delete (e.g. v-chip close)\n clear: 'clear',\n success: 'check_circle',\n info: 'info',\n warning: 'priority_high',\n error: 'warning',\n prev: 'chevron_left',\n next: 'chevron_right',\n checkboxOn: 'check_box',\n checkboxOff: 'check_box_outline_blank',\n checkboxIndeterminate: 'indeterminate_check_box',\n delimiter: 'fiber_manual_record', // for carousel\n sort: 'arrow_upward',\n expand: 'keyboard_arrow_down',\n menu: 'menu',\n subgroup: 'arrow_drop_down',\n dropdown: 'arrow_drop_down',\n radioOn: 'radio_button_checked',\n radioOff: 'radio_button_unchecked',\n edit: 'edit',\n ratingEmpty: 'star_border',\n ratingFull: 'star',\n ratingHalf: 'star_half',\n loading: 'cached',\n first: 'first_page',\n last: 'last_page',\n unfold: 'unfold_more',\n file: 'attach_file',\n plus: 'add',\n minus: 'remove',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-exclamation',\n error: 'mdi-alert',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sort: 'mdi-arrow-up',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle', // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square', // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle', // for carousel\n sort: 'fas fa-sort-up',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fa fa-check',\n cancel: 'fa fa-times-circle',\n close: 'fa fa-times',\n delete: 'fa fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fa fa-times-circle', // delete (e.g. v-chip close)\n success: 'fa fa-check-circle',\n info: 'fa fa-info-circle',\n warning: 'fa fa-exclamation',\n error: 'fa fa-exclamation-triangle',\n prev: 'fa fa-chevron-left',\n next: 'fa fa-chevron-right',\n checkboxOn: 'fa fa-check-square',\n checkboxOff: 'fa fa-square-o',\n checkboxIndeterminate: 'fa fa-minus-square',\n delimiter: 'fa fa-circle', // for carousel\n sort: 'fa fa-sort-up',\n expand: 'fa fa-chevron-down',\n menu: 'fa fa-bars',\n subgroup: 'fa fa-caret-down',\n dropdown: 'fa fa-caret-down',\n radioOn: 'fa fa-dot-circle-o',\n radioOff: 'fa fa-circle-o',\n edit: 'fa fa-pencil',\n ratingEmpty: 'fa fa-star-o',\n ratingFull: 'fa fa-star',\n ratingHalf: 'fa fa-star-half-o',\n loading: 'fa fa-refresh',\n first: 'fa fa-step-backward',\n last: 'fa fa-step-forward',\n unfold: 'fa fa-angle-double-down',\n file: 'fa fa-paperclip',\n plus: 'fa fa-plus',\n minus: 'fa fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\nimport { Component } from 'vue'\nimport icons from './fa'\n\nexport function convertToComponentDeclarations (\n component: Component | string,\n iconSet: VuetifyIcons,\n) {\n const result: Partial = {}\n\n for (const key in iconSet) {\n result[key] = {\n component,\n props: {\n icon: (iconSet[key] as string).split(' fa-'),\n },\n }\n }\n\n return result as VuetifyIcons\n}\n\nexport default convertToComponentDeclarations('font-awesome-icon', icons)\n","import mdiSvg from './mdi-svg'\nimport md from './md'\nimport mdi from './mdi'\nimport fa from './fa'\nimport fa4 from './fa4'\nimport faSvg from './fa-svg'\n\nexport default Object.freeze({\n mdiSvg,\n md,\n mdi,\n fa,\n fa4,\n faSvg,\n})\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Icons as IIcons } from 'vuetify/types/services/icons'\n\n// Presets\nimport presets from './presets'\n\nexport class Icons extends Service implements IIcons {\n static property: 'icons' = 'icons'\n\n public iconfont: IIcons['iconfont']\n\n public values: IIcons['values']\n\n public component: IIcons['component']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n iconfont,\n values,\n component,\n } = preset[Icons.property]\n\n this.component = component\n this.iconfont = iconfont\n this.values = mergeDeep(\n presets[iconfont],\n values\n ) as IIcons['values']\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { consoleError, consoleWarn } from '../../util/console'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyLocale,\n Lang as ILang,\n} from 'vuetify/types/services/lang'\n\nconst LANG_PREFIX = '$vuetify.'\nconst fallback = Symbol('Lang fallback')\n\nfunction getTranslation (\n locale: VuetifyLocale,\n key: string,\n usingDefault = false,\n defaultLocale: VuetifyLocale\n): string {\n const shortKey = key.replace(LANG_PREFIX, '')\n let translation = getObjectValueByPath(locale, shortKey, fallback) as string | typeof fallback\n\n if (translation === fallback) {\n if (usingDefault) {\n consoleError(`Translation key \"${shortKey}\" not found in fallback`)\n translation = key\n } else {\n consoleWarn(`Translation key \"${shortKey}\" not found, falling back to default`)\n translation = getTranslation(defaultLocale, key, true, defaultLocale)\n }\n }\n\n return translation\n}\n\nexport class Lang extends Service implements ILang {\n static property: 'lang' = 'lang'\n\n public current: ILang['current']\n\n public defaultLocale = 'en'\n\n public locales: ILang['locales']\n\n private translator: ILang['t']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n current,\n locales,\n t,\n } = preset[Lang.property]\n\n this.current = current\n this.locales = locales\n this.translator = t || this.defaultTranslator\n }\n\n public currentLocale (key: string) {\n const translation = this.locales[this.current]\n const defaultLocale = this.locales[this.defaultLocale]\n\n return getTranslation(translation, key, false, defaultLocale)\n }\n\n public t (key: string, ...params: any[]) {\n if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params)\n\n return this.translator(key, ...params)\n }\n\n private defaultTranslator (key: string, ...params: any[]) {\n return this.replace(this.currentLocale(key), params)\n }\n\n private replace (str: string, params: any[]) {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n /* istanbul ignore next */\n return String(params[+index])\n })\n }\n}\n","import { ColorInt, XYZ } from '../colorUtils'\nimport { clamp } from '../../util/helpers'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): ColorInt {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0)\n}\n\nexport function toXYZ (rgb: ColorInt): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n const r = transform((rgb >> 16 & 0xff) / 255)\n const g = transform((rgb >> 8 & 0xff) / 255)\n const b = transform((rgb >> 0 & 0xff) / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem,\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record,\n isItem = false,\n variations = true,\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i]\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record {\n const values: Record = {\n base: intToHex(value),\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n","/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += ``\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n","import { install } from './install'\n\n// Types\nimport Vue from 'vue'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\nimport {\n VuetifyService,\n VuetifyServiceContract,\n} from 'vuetify/types/services'\n\n// Services\nimport * as services from './services'\n\nexport default class Vuetify {\n static install = install\n\n static installed = false\n\n static version = __VUETIFY_VERSION__\n\n static config = {\n silent: false,\n }\n\n public framework: Dictionary = {\n isHydrating: false,\n } as any\n\n public installed: string[] = []\n\n public preset = {} as VuetifyPreset\n\n public userPreset: UserVuetifyPreset = {}\n\n constructor (userPreset: UserVuetifyPreset = {}) {\n this.userPreset = userPreset\n\n this.use(services.Presets)\n this.use(services.Application)\n this.use(services.Breakpoint)\n this.use(services.Goto)\n this.use(services.Icons)\n this.use(services.Lang)\n this.use(services.Theme)\n }\n\n // Called on the new vuetify instance\n // bootstrap in install beforeCreate\n // Exposes ssrContext if available\n init (root: Vue, ssrContext?: object) {\n this.installed.forEach(property => {\n const service = this.framework[property]\n\n service.framework = this.framework\n\n service.init(root, ssrContext)\n })\n\n // rtl is not installed and\n // will never be called by\n // the init process\n this.framework.rtl = Boolean(this.preset.rtl) as any\n }\n\n // Instantiate a VuetifyService\n use (Service: VuetifyService) {\n const property = Service.property\n\n if (this.installed.includes(property)) return\n\n // TODO maybe a specific type for arg 2?\n this.framework[property] = new Service(this.preset, this as any)\n this.installed.push(property)\n }\n}\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try ''`, this)\n }\n\n this.addActivatorEvents()\n },\n\n beforeDestroy () {\n this.removeActivatorEvents()\n },\n\n methods: {\n addActivatorEvents () {\n if (\n !this.activator ||\n this.disabled ||\n !this.getActivator()\n ) return\n\n this.listeners = this.genActivatorListeners()\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n this.getActivator()!.addEventListener(key, this.listeners[key] as any)\n }\n },\n genActivator () {\n const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n on: this.genActivatorListeners(),\n attrs: this.genActivatorAttributes(),\n })) || []\n\n this.activatorNode = node\n\n return node\n },\n genActivatorAttributes () {\n return {\n role: (this.openOnClick && !this.openOnHover) ? 'button' : undefined,\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genActivatorListeners () {\n if (this.disabled) return {}\n\n const listeners: Listeners = {}\n\n if (this.openOnHover) {\n listeners.mouseenter = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.mouseleave = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n } else if (this.openOnClick) {\n listeners.click = (e: MouseEvent) => {\n const activator = this.getActivator(e)\n if (activator) activator.focus()\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n if (this.openOnFocus) {\n listeners.focus = (e: FocusEvent) => {\n this.getActivator(e)\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n return listeners\n },\n getActivator (e?: Event): HTMLElement | null {\n // If we've already fetched the activator, re-use\n if (this.activatorElement) return this.activatorElement\n\n let activator = null\n\n if (this.activator) {\n const target = this.internalActivator ? this.$el : document\n\n if (typeof this.activator === 'string') {\n // Selector\n activator = target.querySelector(this.activator)\n } else if ((this.activator as any).$el) {\n // Component (ref)\n activator = (this.activator as any).$el\n } else {\n // HTMLElement | Element\n activator = this.activator\n }\n } else if (this.activatorNode.length === 1 || (this.activatorNode.length && !e)) {\n // Use the contents of the activator slot\n // There's either only one element in it or we\n // don't have a click event to use as a last resort\n const vm = this.activatorNode[0].componentInstance\n if (\n vm &&\n vm.$options.mixins && // Activatable is indirectly used via Menuable\n vm.$options.mixins.some((m: any) => m.options && ['activatable', 'menuable'].includes(m.options.name))\n ) {\n // Activator is actually another activatible component, use its activator (#8846)\n activator = (vm as any).getActivator()\n } else {\n activator = this.activatorNode[0].elm as HTMLElement\n }\n } else if (e) {\n // Activated by a click or focus event\n activator = (e.currentTarget || e.target) as HTMLElement\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n this.activatorElement = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return this.activatorElement\n },\n getContentSlot () {\n return getSlot(this, 'default', this.getValueProxy(), true)\n },\n getValueProxy (): object {\n const self = this\n return {\n get value () {\n return self.isActive\n },\n set value (isActive: boolean) {\n self.isActive = isActive\n },\n }\n },\n removeActivatorEvents () {\n if (\n !this.activator ||\n !this.activatorElement\n ) return\n\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n (this.activatorElement as any).removeEventListener(key, this.listeners[key])\n }\n\n this.listeners = {}\n },\n resetActivator () {\n this.removeActivatorEvents()\n this.activatorElement = null\n this.getActivator()\n this.addActivatorEvents()\n },\n },\n})\n","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any,\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any,\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:return-value', this.originalValue)\n }\n },\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n },\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","import Vue from 'vue'\n\nimport { getZIndex } from '../../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'stackable',\n\n data () {\n return {\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false,\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n },\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n },\n },\n})\n","import Vue from 'vue'\nimport { PropType, RenderContext } from 'vue/types/options'\n\ninterface options extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide,\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false,\n },\n },\n },\n\n props: {\n dark: {\n type: Boolean as PropType,\n default: null,\n },\n light: {\n type: Boolean as PropType,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark,\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.appIsDark\n }\n },\n rootThemeClasses (): Dictionary {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark,\n }\n },\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true,\n },\n },\n})\n\nexport default Themeable\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections,\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","export type EasingFunction = (t: number) => number\n\n// linear\nexport const linear = (t: number) => t\n// accelerating from zero velocity\nexport const easeInQuad = (t: number) => t ** 2\n// decelerating to zero velocity\nexport const easeOutQuad = (t: number) => t * (2 - t)\n// acceleration until halfway, then deceleration\nexport const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t)\n// accelerating from zero velocity\nexport const easeInCubic = (t: number) => t ** 3\n// decelerating to zero velocity\nexport const easeOutCubic = (t: number) => --t ** 3 + 1\n// acceleration until halfway, then deceleration\nexport const easeInOutCubic = (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n// accelerating from zero velocity\nexport const easeInQuart = (t: number) => t ** 4\n// decelerating to zero velocity\nexport const easeOutQuart = (t: number) => 1 - --t ** 4\n// acceleration until halfway, then deceleration\nexport const easeInOutQuart = (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t)\n// accelerating from zero velocity\nexport const easeInQuint = (t: number) => t ** 5\n// decelerating to zero velocity\nexport const easeOutQuint = (t: number) => 1 + --t ** 5\n// acceleration until halfway, then deceleration\nexport const easeInOutQuint = (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n","import Vue from 'vue'\n\n// Return target's cumulative offset from the top\nexport function getOffset (target: any): number {\n if (typeof target === 'number') {\n return target\n }\n\n let el = $(target)\n if (!el) {\n throw typeof target === 'string'\n ? new Error(`Target element \"${target}\" not found.`)\n : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`)\n }\n\n let totalOffset = 0\n while (el) {\n totalOffset += el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function getContainer (container: any): HTMLElement {\n const el = $(container)\n\n if (el) return el\n\n throw typeof container === 'string'\n ? new Error(`Container element \"${container}\" not found.`)\n : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`)\n}\n\nfunction type (el: any) {\n return el == null ? el : el.constructor.name\n}\n\nfunction $ (el: any): HTMLElement | null {\n if (typeof el === 'string') {\n return document.querySelector(el)\n } else if (el && el._isVue) {\n return (el as Vue).$el as HTMLElement\n } else if (el instanceof HTMLElement) {\n return el\n } else {\n return null\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight\n if (\n progress === 1 ||\n // Need to go lower but reach bottom\n (targetLocation > container.scrollTop && reachBottom)\n ) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n","// Contracts\nimport { VuetifyServiceContract } from 'vuetify/types/services/index'\n\n// Types\nimport Vue from 'vue'\n\nexport class Service implements VuetifyServiceContract {\n framework = {}\n\n init (root: Vue, ssrContext?: object) {}\n}\n","// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/)\n}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function classToHex (\n color: string,\n colors: Record>,\n currentTheme: Partial,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record>,\n currentTheme: Partial,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","/* eslint-disable no-console */\nimport Vuetify from '../framework'\n\nfunction createMessage (message: string, vm?: any, parent?: any): string | void {\n if (Vuetify.config.silent) return\n\n if (parent) {\n vm = {\n _isVue: true,\n $parent: parent,\n $options: vm,\n }\n }\n\n if (vm) {\n // Only show each message once per instance\n vm.$_alreadyWarned = vm.$_alreadyWarned || []\n if (vm.$_alreadyWarned.includes(message)) return\n vm.$_alreadyWarned.push(message)\n }\n\n return `[Vuetify] ${message}` + (\n vm ? generateComponentTrace(vm) : ''\n )\n}\n\nexport function consoleInfo (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.info(newMessage)\n}\n\nexport function consoleWarn (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.warn(newMessage)\n}\n\nexport function consoleError (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.error(newMessage)\n}\n\nexport function deprecate (original: string, replacement: string, vm?: any, parent?: any) {\n consoleWarn(`[UPGRADE] '${original}' is deprecated, use '${replacement}' instead.`, vm, parent)\n}\nexport function breaking (original: string, replacement: string, vm?: any, parent?: any) {\n consoleError(`[BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`, vm, parent)\n}\nexport function removed (original: string, vm?: any, parent?: any) {\n consoleWarn(`[REMOVED] '${original}' has been removed. You can safely omit it.`, vm, parent)\n}\n\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nconst classifyRE = /(?:^|[-_])(\\w)/g\nconst classify = (str: string) => str\n .replace(classifyRE, c => c.toUpperCase())\n .replace(/[-_]/g, '')\n\nfunction formatComponentName (vm: any, includeFile?: boolean): string {\n if (vm.$root === vm) {\n return ''\n }\n const options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {}\n let name = options.name || options._componentTag\n const file = options.__file\n if (!name && file) {\n const match = file.match(/([^/\\\\]+)\\.vue$/)\n name = match && match[1]\n }\n\n return (\n (name ? `<${classify(name)}>` : ``) +\n (file && includeFile !== false ? ` at ${file}` : '')\n )\n}\n\nfunction generateComponentTrace (vm: any): string {\n if (vm._isVue && vm.$parent) {\n const tree: any[] = []\n let currentRecursiveSequence = 0\n while (vm) {\n if (tree.length > 0) {\n const last: any = tree[tree.length - 1]\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++\n vm = vm.$parent\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence]\n currentRecursiveSequence = 0\n }\n }\n tree.push(vm)\n vm = vm.$parent\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map((vm, i) => `${\n i === 0 ? '---> ' : ' '.repeat(5 + i * 2)\n }${\n Array.isArray(vm)\n ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n : formatComponentName(vm)\n }`)\n .join('\\n')\n } else {\n return `\\n\\n(found in ${formatComponentName(vm)})`\n }\n}\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n props: {\n tag: {\n type: String,\n default: el,\n },\n },\n\n render (h, { data, props, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(props.tag, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n const once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n // Look for custom component in the configuration\n const component = vm.$vuetify.icons.component\n\n // Look for overrides\n if (iconName.startsWith('$')) {\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n const override = getObjectValueByPath(vm, iconPath, iconName)\n\n if (typeof override === 'string') iconName = override\n else return override\n }\n\n if (component == null) {\n return iconName\n }\n\n return {\n component,\n props: {\n icon: iconName,\n },\n }\n}\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup[] {\n const key = groupBy[0]\n const groups: ItemGroup[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - ``\n * - 'scoped' for old style scoped slots (``) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots.hasOwnProperty(name)) return 'normal'\n if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters): void | ReturnType => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots.hasOwnProperty(name)) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary = {},\n target: Dictionary = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\n/** Polyfill for Event.prototype.composedPath */\nexport function composedPath (e: Event): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n}\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins (...args: T): ExtractVue extends infer V ? V extends Vue ? VueConstructor : never : never\nexport default function mixins (...args: VueConstructor[]): VueConstructor\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor ? V : never\n >\n : T extends VueConstructor ? V : never\n\ntype UnionToIntersection =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"codemirror\")):\"function\"==typeof define&&define.amd?define([\"codemirror\"],t):\"object\"==typeof exports?exports.VueCodemirror=t(require(\"codemirror\")):e.VueCodemirror=t(e.codemirror)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=window.CodeMirror||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.5.4';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i], vm);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n if (!valid && haveExpectedTypes) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType (value, type, vm) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n try {\n valid = value instanceof type;\n } catch (e) {\n warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n valid = false;\n }\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(functionTypeCheckRE);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n // check if we need to specify expected value\n if (\n expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n isExplicable(typeof value) &&\n !isBoolean(expectedType, receivedType)\n ) {\n message += \" with value \" + (styleValue(value, expectedType));\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + (styleValue(value, receivedType)) + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable (value) {\n return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array