{"version":3,"file":"video-embed.bundle.js","mappings":"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","sources":["webpack://peertube-client/webpack/runtime/create fake namespace object","webpack://peertube-client/webpack/runtime/load script","webpack://peertube-client/./src/root-helpers/logger.ts","webpack://peertube-client/./src/root-helpers/peertube-web-storage.ts","webpack://peertube-client/./src/root-helpers/users/user-local-storage-keys.ts","webpack://peertube-client/./src/root-helpers/users/user-tokens.ts","webpack://peertube-client/./node_modules/@videojs/xhr/lib/http-handler.js","webpack://peertube-client/./node_modules/@videojs/xhr/lib/index.js","webpack://peertube-client/./node_modules/base64-js/index.js","webpack://peertube-client/./node_modules/bittorrent-tracker/client.js","webpack://peertube-client/./node_modules/bittorrent-tracker/lib/client/tracker.js","webpack://peertube-client/./node_modules/bittorrent-tracker/lib/client/websocket-tracker.js","webpack://peertube-client/./node_modules/bittorrent-tracker/lib/common.js","webpack://peertube-client/./node_modules/buffer/index.js","webpack://peertube-client/./node_modules/clone/clone.js","webpack://peertube-client/./node_modules/core-js/actual/reflect/index.js","webpack://peertube-client/./node_modules/core-js/es/reflect/index.js","webpack://peertube-client/./node_modules/core-js/features/reflect/index.js","webpack://peertube-client/./node_modules/core-js/full/reflect/index.js","webpack://peertube-client/./node_modules/core-js/internals/a-callable.js","webpack://peertube-client/./node_modules/core-js/internals/a-constructor.js","webpack://peertube-client/./node_modules/core-js/internals/a-possible-prototype.js","webpack://peertube-client/./node_modules/core-js/internals/an-instance.js","webpack://peertube-client/./node_modules/core-js/internals/an-object.js","webpack://peertube-client/./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack://peertube-client/./node_modules/core-js/internals/array-includes.js","webpack://peertube-client/./node_modules/core-js/internals/array-iteration.js","webpack://peertube-client/./node_modules/core-js/internals/array-slice-simple.js","webpack://peertube-client/./node_modules/core-js/internals/array-slice.js","webpack://peertube-client/./node_modules/core-js/internals/array-species-constructor.js","webpack://peertube-client/./node_modules/core-js/internals/array-species-create.js","webpack://peertube-client/./node_modules/core-js/internals/array-unique-by.js","webpack://peertube-client/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://peertube-client/./node_modules/core-js/internals/classof-raw.js","webpack://peertube-client/./node_modules/core-js/internals/classof.js","webpack://peertube-client/./node_modules/core-js/internals/collection-strong.js","webpack://peertube-client/./node_modules/core-js/internals/collection-weak.js","webpack://peertube-client/./node_modules/core-js/internals/collection.js","webpack://peertube-client/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://peertube-client/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://peertube-client/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://peertube-client/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://peertube-client/./node_modules/core-js/internals/create-property-descriptor.js","webpack://peertube-client/./node_modules/core-js/internals/create-property.js","webpack://peertube-client/./node_modules/core-js/internals/define-built-in.js","webpack://peertube-client/./node_modules/core-js/internals/define-built-ins.js","webpack://peertube-client/./node_modules/core-js/internals/define-global-property.js","webpack://peertube-client/./node_modules/core-js/internals/define-iterator.js","webpack://peertube-client/./node_modules/core-js/internals/descriptors.js","webpack://peertube-client/./node_modules/core-js/internals/document-create-element.js","webpack://peertube-client/./node_modules/core-js/internals/engine-user-agent.js","webpack://peertube-client/./node_modules/core-js/internals/engine-v8-version.js","webpack://peertube-client/./node_modules/core-js/internals/enum-bug-keys.js","webpack://peertube-client/./node_modules/core-js/internals/export.js","webpack://peertube-client/./node_modules/core-js/internals/fails.js","webpack://peertube-client/./node_modules/core-js/internals/freezing.js","webpack://peertube-client/./node_modules/core-js/internals/function-apply.js","webpack://peertube-client/./node_modules/core-js/internals/function-bind-context.js","webpack://peertube-client/./node_modules/core-js/internals/function-bind-native.js","webpack://peertube-client/./node_modules/core-js/internals/function-bind.js","webpack://peertube-client/./node_modules/core-js/internals/function-call.js","webpack://peertube-client/./node_modules/core-js/internals/function-name.js","webpack://peertube-client/./node_modules/core-js/internals/function-uncurry-this.js","webpack://peertube-client/./node_modules/core-js/internals/get-built-in.js","webpack://peertube-client/./node_modules/core-js/internals/get-iterator-method.js","webpack://peertube-client/./node_modules/core-js/internals/get-iterator.js","webpack://peertube-client/./node_modules/core-js/internals/get-method.js","webpack://peertube-client/./node_modules/core-js/internals/global.js","webpack://peertube-client/./node_modules/core-js/internals/has-own-property.js","webpack://peertube-client/./node_modules/core-js/internals/hidden-keys.js","webpack://peertube-client/./node_modules/core-js/internals/html.js","webpack://peertube-client/./node_modules/core-js/internals/ie8-dom-define.js","webpack://peertube-client/./node_modules/core-js/internals/indexed-object.js","webpack://peertube-client/./node_modules/core-js/internals/inherit-if-required.js","webpack://peertube-client/./node_modules/core-js/internals/inspect-source.js","webpack://peertube-client/./node_modules/core-js/internals/internal-metadata.js","webpack://peertube-client/./node_modules/core-js/internals/internal-state.js","webpack://peertube-client/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://peertube-client/./node_modules/core-js/internals/is-array.js","webpack://peertube-client/./node_modules/core-js/internals/is-callable.js","webpack://peertube-client/./node_modules/core-js/internals/is-constructor.js","webpack://peertube-client/./node_modules/core-js/internals/is-data-descriptor.js","webpack://peertube-client/./node_modules/core-js/internals/is-forced.js","webpack://peertube-client/./node_modules/core-js/internals/is-object.js","webpack://peertube-client/./node_modules/core-js/internals/is-pure.js","webpack://peertube-client/./node_modules/core-js/internals/is-symbol.js","webpack://peertube-client/./node_modules/core-js/internals/iterate.js","webpack://peertube-client/./node_modules/core-js/internals/iterator-close.js","webpack://peertube-client/./node_modules/core-js/internals/iterators-core.js","webpack://peertube-client/./node_modules/core-js/internals/iterators.js","webpack://peertube-client/./node_modules/core-js/internals/length-of-array-like.js","webpack://peertube-client/./node_modules/core-js/internals/make-built-in.js","webpack://peertube-client/./node_modules/core-js/internals/math-trunc.js","webpack://peertube-client/./node_modules/core-js/internals/native-symbol.js","webpack://peertube-client/./node_modules/core-js/internals/native-weak-map.js","webpack://peertube-client/./node_modules/core-js/internals/object-create.js","webpack://peertube-client/./node_modules/core-js/internals/object-define-properties.js","webpack://peertube-client/./node_modules/core-js/internals/object-define-property.js","webpack://peertube-client/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://peertube-client/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://peertube-client/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://peertube-client/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://peertube-client/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://peertube-client/./node_modules/core-js/internals/object-is-extensible.js","webpack://peertube-client/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://peertube-client/./node_modules/core-js/internals/object-keys-internal.js","webpack://peertube-client/./node_modules/core-js/internals/object-keys.js","webpack://peertube-client/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://peertube-client/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://peertube-client/./node_modules/core-js/internals/object-to-string.js","webpack://peertube-client/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://peertube-client/./node_modules/core-js/internals/own-keys.js","webpack://peertube-client/./node_modules/core-js/internals/path.js","webpack://peertube-client/./node_modules/core-js/internals/reflect-metadata.js","webpack://peertube-client/./node_modules/core-js/internals/require-object-coercible.js","webpack://peertube-client/./node_modules/core-js/internals/set-species.js","webpack://peertube-client/./node_modules/core-js/internals/set-to-string-tag.js","webpack://peertube-client/./node_modules/core-js/internals/shared-key.js","webpack://peertube-client/./node_modules/core-js/internals/shared-store.js","webpack://peertube-client/./node_modules/core-js/internals/shared.js","webpack://peertube-client/./node_modules/core-js/internals/to-absolute-index.js","webpack://peertube-client/./node_modules/core-js/internals/to-indexed-object.js","webpack://peertube-client/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://peertube-client/./node_modules/core-js/internals/to-length.js","webpack://peertube-client/./node_modules/core-js/internals/to-object.js","webpack://peertube-client/./node_modules/core-js/internals/to-primitive.js","webpack://peertube-client/./node_modules/core-js/internals/to-property-key.js","webpack://peertube-client/./node_modules/core-js/internals/to-string-tag-support.js","webpack://peertube-client/./node_modules/core-js/internals/try-to-string.js","webpack://peertube-client/./node_modules/core-js/internals/uid.js","webpack://peertube-client/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://peertube-client/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://peertube-client/./node_modules/core-js/internals/well-known-symbol.js","webpack://peertube-client/./node_modules/core-js/modules/es.map.constructor.js","webpack://peertube-client/./node_modules/core-js/modules/es.map.js","webpack://peertube-client/./node_modules/core-js/modules/es.object.to-string.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.apply.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.construct.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.define-property.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.delete-property.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.get-prototype-of.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.get.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.has.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.is-extensible.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.own-keys.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.prevent-extensions.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.set-prototype-of.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.set.js","webpack://peertube-client/./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack://peertube-client/./node_modules/core-js/modules/es.weak-map.constructor.js","webpack://peertube-client/./node_modules/core-js/modules/es.weak-map.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.define-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.delete-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.get-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.has-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js","webpack://peertube-client/./node_modules/core-js/modules/esnext.reflect.metadata.js","webpack://peertube-client/./node_modules/core-js/stable/reflect/index.js","webpack://peertube-client/./node_modules/debug/src/browser.js","webpack://peertube-client/./node_modules/debug/src/common.js","webpack://peertube-client/./node_modules/err-code/index.js","webpack://peertube-client/./node_modules/events/events.js","webpack://peertube-client/./node_modules/get-browser-rtc/index.js","webpack://peertube-client/./node_modules/global/document.js","webpack://peertube-client/./node_modules/global/window.js","webpack://peertube-client/./node_modules/ieee754/index.js","webpack://peertube-client/./node_modules/inherits/inherits_browser.js","webpack://peertube-client/./node_modules/is-function/index.js","webpack://peertube-client/./node_modules/keycode/index.js","webpack://peertube-client/./node_modules/moment/locale/af.js","webpack://peertube-client/./node_modules/moment/locale/ar-dz.js","webpack://peertube-client/./node_modules/moment/locale/ar-kw.js","webpack://peertube-client/./node_modules/moment/locale/ar-ly.js","webpack://peertube-client/./node_modules/moment/locale/ar-ma.js","webpack://peertube-client/./node_modules/moment/locale/ar-sa.js","webpack://peertube-client/./node_modules/moment/locale/ar-tn.js","webpack://peertube-client/./node_modules/moment/locale/ar.js","webpack://peertube-client/./node_modules/moment/locale/az.js","webpack://peertube-client/./node_modules/moment/locale/be.js","webpack://peertube-client/./node_modules/moment/locale/bg.js","webpack://peertube-client/./node_modules/moment/locale/bm.js","webpack://peertube-client/./node_modules/moment/locale/bn-bd.js","webpack://peertube-client/./node_modules/moment/locale/bn.js","webpack://peertube-client/./node_modules/moment/locale/bo.js","webpack://peertube-client/./node_modules/moment/locale/br.js","webpack://peertube-client/./node_modules/moment/locale/bs.js","webpack://peertube-client/./node_modules/moment/locale/ca.js","webpack://peertube-client/./node_modules/moment/locale/cs.js","webpack://peertube-client/./node_modules/moment/locale/cv.js","webpack://peertube-client/./node_modules/moment/locale/cy.js","webpack://peertube-client/./node_modules/moment/locale/da.js","webpack://peertube-client/./node_modules/moment/locale/de-at.js","webpack://peertube-client/./node_modules/moment/locale/de-ch.js","webpack://peertube-client/./node_modules/moment/locale/de.js","webpack://peertube-client/./node_modules/moment/locale/dv.js","webpack://peertube-client/./node_modules/moment/locale/el.js","webpack://peertube-client/./node_modules/moment/locale/en-au.js","webpack://peertube-client/./node_modules/moment/locale/en-ca.js","webpack://peertube-client/./node_modules/moment/locale/en-gb.js","webpack://peertube-client/./node_modules/moment/locale/en-ie.js","webpack://peertube-client/./node_modules/moment/locale/en-il.js","webpack://peertube-client/./node_modules/moment/locale/en-in.js","webpack://peertube-client/./node_modules/moment/locale/en-nz.js","webpack://peertube-client/./node_modules/moment/locale/en-sg.js","webpack://peertube-client/./node_modules/moment/locale/eo.js","webpack://peertube-client/./node_modules/moment/locale/es-do.js","webpack://peertube-client/./node_modules/moment/locale/es-mx.js","webpack://peertube-client/./node_modules/moment/locale/es-us.js","webpack://peertube-client/./node_modules/moment/locale/es.js","webpack://peertube-client/./node_modules/moment/locale/et.js","webpack://peertube-client/./node_modules/moment/locale/eu.js","webpack://peertube-client/./node_modules/moment/locale/fa.js","webpack://peertube-client/./node_modules/moment/locale/fi.js","webpack://peertube-client/./node_modules/moment/locale/fil.js","webpack://peertube-client/./node_modules/moment/locale/fo.js","webpack://peertube-client/./node_modules/moment/locale/fr-ca.js","webpack://peertube-client/./node_modules/moment/locale/fr-ch.js","webpack://peertube-client/./node_modules/moment/locale/fr.js","webpack://peertube-client/./node_modules/moment/locale/fy.js","webpack://peertube-client/./node_modules/moment/locale/ga.js","webpack://peertube-client/./node_modules/moment/locale/gd.js","webpack://peertube-client/./node_modules/moment/locale/gl.js","webpack://peertube-client/./node_modules/moment/locale/gom-deva.js","webpack://peertube-client/./node_modules/moment/locale/gom-latn.js","webpack://peertube-client/./node_modules/moment/locale/gu.js","webpack://peertube-client/./node_modules/moment/locale/he.js","webpack://peertube-client/./node_modules/moment/locale/hi.js","webpack://peertube-client/./node_modules/moment/locale/hr.js","webpack://peertube-client/./node_modules/moment/locale/hu.js","webpack://peertube-client/./node_modules/moment/locale/hy-am.js","webpack://peertube-client/./node_modules/moment/locale/id.js","webpack://peertube-client/./node_modules/moment/locale/is.js","webpack://peertube-client/./node_modules/moment/locale/it-ch.js","webpack://peertube-client/./node_modules/moment/locale/it.js","webpack://peertube-client/./node_modules/moment/locale/ja.js","webpack://peertube-client/./node_modules/moment/locale/jv.js","webpack://peertube-client/./node_modules/moment/locale/ka.js","webpack://peertube-client/./node_modules/moment/locale/kk.js","webpack://peertube-client/./node_modules/moment/locale/km.js","webpack://peertube-client/./node_modules/moment/locale/kn.js","webpack://peertube-client/./node_modules/moment/locale/ko.js","webpack://peertube-client/./node_modules/moment/locale/ku.js","webpack://peertube-client/./node_modules/moment/locale/ky.js","webpack://peertube-client/./node_modules/moment/locale/lb.js","webpack://peertube-client/./node_modules/moment/locale/lo.js","webpack://peertube-client/./node_modules/moment/locale/lt.js","webpack://peertube-client/./node_modules/moment/locale/lv.js","webpack://peertube-client/./node_modules/moment/locale/me.js","webpack://peertube-client/./node_modules/moment/locale/mi.js","webpack://peertube-client/./node_modules/moment/locale/mk.js","webpack://peertube-client/./node_modules/moment/locale/ml.js","webpack://peertube-client/./node_modules/moment/locale/mn.js","webpack://peertube-client/./node_modules/moment/locale/mr.js","webpack://peertube-client/./node_modules/moment/locale/ms-my.js","webpack://peertube-client/./node_modules/moment/locale/ms.js","webpack://peertube-client/./node_modules/moment/locale/mt.js","webpack://peertube-client/./node_modules/moment/locale/my.js","webpack://peertube-client/./node_modules/moment/locale/nb.js","webpack://peertube-client/./node_modules/moment/locale/ne.js","webpack://peertube-client/./node_modules/moment/locale/nl-be.js","webpack://peertube-client/./node_modules/moment/locale/nl.js","webpack://peertube-client/./node_modules/moment/locale/nn.js","webpack://peertube-client/./node_modules/moment/locale/oc-lnc.js","webpack://peertube-client/./node_modules/moment/locale/pa-in.js","webpack://peertube-client/./node_modules/moment/locale/pl.js","webpack://peertube-client/./node_modules/moment/locale/pt-br.js","webpack://peertube-client/./node_modules/moment/locale/pt.js","webpack://peertube-client/./node_modules/moment/locale/ro.js","webpack://peertube-client/./node_modules/moment/locale/ru.js","webpack://peertube-client/./node_modules/moment/locale/sd.js","webpack://peertube-client/./node_modules/moment/locale/se.js","webpack://peertube-client/./node_modules/moment/locale/si.js","webpack://peertube-client/./node_modules/moment/locale/sk.js","webpack://peertube-client/./node_modules/moment/locale/sl.js","webpack://peertube-client/./node_modules/moment/locale/sq.js","webpack://peertube-client/./node_modules/moment/locale/sr-cyrl.js","webpack://peertube-client/./node_modules/moment/locale/sr.js","webpack://peertube-client/./node_modules/moment/locale/ss.js","webpack://peertube-client/./node_modules/moment/locale/sv.js","webpack://peertube-client/./node_modules/moment/locale/sw.js","webpack://peertube-client/./node_modules/moment/locale/ta.js","webpack://peertube-client/./node_modules/moment/locale/te.js","webpack://peertube-client/./node_modules/moment/locale/tet.js","webpack://peertube-client/./node_modules/moment/locale/tg.js","webpack://peertube-client/./node_modules/moment/locale/th.js","webpack://peertube-client/./node_modules/moment/locale/tk.js","webpack://peertube-client/./node_modules/moment/locale/tl-ph.js","webpack://peertube-client/./node_modules/moment/locale/tlh.js","webpack://peertube-client/./node_modules/moment/locale/tr.js","webpack://peertube-client/./node_modules/moment/locale/tzl.js","webpack://peertube-client/./node_modules/moment/locale/tzm-latn.js","webpack://peertube-client/./node_modules/moment/locale/tzm.js","webpack://peertube-client/./node_modules/moment/locale/ug-cn.js","webpack://peertube-client/./node_modules/moment/locale/uk.js","webpack://peertube-client/./node_modules/moment/locale/ur.js","webpack://peertube-client/./node_modules/moment/locale/uz-latn.js","webpack://peertube-client/./node_modules/moment/locale/uz.js","webpack://peertube-client/./node_modules/moment/locale/vi.js","webpack://peertube-client/./node_modules/moment/locale/x-pseudo.js","webpack://peertube-client/./node_modules/moment/locale/yo.js","webpack://peertube-client/./node_modules/moment/locale/zh-cn.js","webpack://peertube-client/./node_modules/moment/locale/zh-hk.js","webpack://peertube-client/./node_modules/moment/locale/zh-mo.js","webpack://peertube-client/./node_modules/moment/locale/zh-tw.js","webpack://peertube-client/./node_modules/moment/moment.js","webpack://peertube-client/./node_modules/ms/index.js","webpack://peertube-client/./node_modules/once/once.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/bandwidth-approximator.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/http-media-manager.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/hybrid-loader.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/index.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/loader-interface.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/media-peer.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/p2p-media-manager.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/segments-memory-storage.js","webpack://peertube-client/./node_modules/p2p-media-loader-core-basyton/dist/stringly-typed-event-emitter.js","webpack://peertube-client/./node_modules/process/browser.js","webpack://peertube-client/./node_modules/queue-microtask/index.js","webpack://peertube-client/./node_modules/randombytes/browser.js","webpack://peertube-client/./node_modules/readable-stream/errors-browser.js","webpack://peertube-client/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://peertube-client/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://peertube-client/./node_modules/readable-stream/lib/_stream_readable.js","webpack://peertube-client/./node_modules/readable-stream/lib/_stream_transform.js","webpack://peertube-client/./node_modules/readable-stream/lib/_stream_writable.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://peertube-client/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://peertube-client/./node_modules/readable-stream/readable-browser.js","webpack://peertube-client/./node_modules/run-parallel/index.js","webpack://peertube-client/./node_modules/safe-buffer/index.js","webpack://peertube-client/./node_modules/safe-json-parse/tuple.js","webpack://peertube-client/./node_modules/sha.js/hash.js","webpack://peertube-client/./node_modules/sha.js/sha1.js","webpack://peertube-client/./node_modules/simple-peer/index.js","webpack://peertube-client/./node_modules/simple-websocket/index.js","webpack://peertube-client/./node_modules/string_decoder/lib/string_decoder.js","webpack://peertube-client/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://peertube-client/./node_modules/util-deprecate/browser.js","webpack://peertube-client/./node_modules/video.js/core.js","webpack://peertube-client/./node_modules/videojs-overlay/dist/videojs-overlay.es.js","webpack://peertube-client/./node_modules/videojs-vtt.js/lib/browser-index.js","webpack://peertube-client/./node_modules/videojs-vtt.js/lib/vtt.js","webpack://peertube-client/./node_modules/videojs-vtt.js/lib/vttcue.js","webpack://peertube-client/./node_modules/videojs-vtt.js/lib/vttregion.js","webpack://peertube-client/./node_modules/wrappy/wrappy.js","webpack://peertube-client/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://peertube-client/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/construct.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/extends.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/inherits.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://peertube-client/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://peertube-client/webpack/bootstrap","webpack://peertube-client/webpack/runtime/compat get default export","webpack://peertube-client/webpack/runtime/define property getters","webpack://peertube-client/webpack/runtime/ensure chunk","webpack://peertube-client/webpack/runtime/get javascript chunk filename","webpack://peertube-client/webpack/runtime/get mini-css chunk filename","webpack://peertube-client/webpack/runtime/global","webpack://peertube-client/webpack/runtime/hasOwnProperty shorthand","webpack://peertube-client/webpack/runtime/make namespace object","webpack://peertube-client/webpack/runtime/node module decorator","webpack://peertube-client/webpack/runtime/publicPath","webpack://peertube-client/webpack/runtime/jsonp chunk loading","webpack://peertube-client/./src/assets/player/shared/dock/peertube-dock-component.ts","webpack://peertube-client/./src/assets/player/shared/dock/peertube-dock-plugin.ts","webpack://peertube-client/./src/standalone/videos/api-direct.ts","webpack://peertube-client/./src/root-helpers/url.ts","webpack://peertube-client/../shared/models/plugins/client/client-hook.model.ts","webpack://peertube-client/../shared/models/plugins/server/server-hook.model.ts","webpack://peertube-client/./src/root-helpers/plugins-manager.ts","webpack://peertube-client/./src/standalone/videos/shared/auth-http.ts","webpack://peertube-client/./src/standalone/videos/shared/live-manager.ts","webpack://peertube-client/./src/standalone/videos/shared/player-html.ts","webpack://peertube-client/./src/standalone/videos/shared/player-manager-options.ts","webpack://peertube-client/./src/standalone/videos/shared/video-fetcher.ts","webpack://peertube-client/./src/standalone/videos/embed.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"peertube-client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { ClientLogCreate } from '@shared/models/server'\r\nimport { peertubeLocalStorage } from './peertube-web-storage'\r\nimport { UserTokens } from './users'\r\nimport moment from 'moment'\r\n\r\nexport type LoggerHook = (message: LoggerMessage, meta?: LoggerMeta) => void\r\nexport type LoggerLevel = 'info' | 'warn' | 'error'\r\n\r\nexport type LoggerMessage = string | Error | object\r\nexport type LoggerMeta = Error | { [ id: string ]: any, err?: Error }\r\n\r\nconst ERROR_STACK_MAX_LENGTH = 10100\r\nconst ERROR_STACK_DELETE_ELEMENTS = 100\r\nconst LOGGER_ENDPOINT_ADDRESS = 'https://metrix.pocketnet.app/front/action/v2';\r\n\r\n\r\ndeclare global {\r\n interface Window {\r\n logger: Logger\r\n }\r\n}\r\n\r\nclass Logger {\r\n private readonly hooks: { level: LoggerLevel, hook: LoggerHook }[] = []\r\n private videoLogging: Boolean\r\n private logsStack: String[]\r\n\r\n constructor(videoLogging?: Boolean) {\r\n this.videoLogging = videoLogging ? videoLogging : false\r\n this.logsStack = []\r\n }\r\n\r\n trace (message: LoggerMessage, meta?: LoggerMeta) {\r\n if (!this.videoLogging) return\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n }\r\n\r\n debug (message: LoggerMessage, meta?: LoggerMeta) {\r\n if (!this.videoLogging) return\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n }\r\n\r\n log (message: LoggerMessage, meta?: LoggerMeta) {\r\n if (!this.videoLogging) return\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n }\r\n\r\n info (message: LoggerMessage, meta?: LoggerMeta) {\r\n this.runHooks('info', message, meta)\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n\r\n if (meta) console.log(message, meta)\r\n else console.log(message)\r\n }\r\n\r\n warn (message: LoggerMessage, meta?: LoggerMeta) {\r\n this.runHooks('warn', message, meta)\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n\r\n if (meta) console.warn(message, meta)\r\n else console.warn(message)\r\n }\r\n\r\n error (message: LoggerMessage, meta?: LoggerMeta) {\r\n this.runHooks('error', message, meta)\r\n\r\n const data = `${message} | ${typeof meta === 'object' ? JSON.stringify(meta) : (meta || '')}`\r\n\r\n this.addLogData(data)\r\n\r\n if (meta) console.error(message, meta)\r\n else console.error(message)\r\n }\r\n\r\n addHook (level: LoggerLevel, hook: LoggerHook) {\r\n this.hooks.push({ level, hook })\r\n }\r\n\r\n registerServerSending (serverUrl: string) {\r\n this.addHook('warn', (message, meta) => this.sendClientLog(serverUrl, this.buildServerLogPayload('warn', message, meta)))\r\n this.addHook('error', (message, meta) => this.sendClientLog(serverUrl, this.buildServerLogPayload('error', message, meta)))\r\n }\r\n\r\n sendClientLog (serverUrl: string, payload: ClientLogCreate | null) {\r\n if (!payload) return\r\n\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n })\r\n\r\n try {\r\n const tokens = UserTokens.getUserTokens(peertubeLocalStorage)\r\n\r\n if (tokens) headers.set('Authorization', `${tokens.tokenType} ${tokens.accessToken}`)\r\n } catch (err) {\r\n console.error('Cannot set tokens to client log sender.', { err })\r\n }\r\n\r\n try {\r\n fetch(serverUrl + '/api/v1/server/logs/client', {\r\n headers,\r\n method: 'POST',\r\n body: JSON.stringify(payload)\r\n })\r\n } catch (err) {\r\n console.error('Cannot send client warn/error to server.', err)\r\n }\r\n }\r\n\r\n returnLog (videoId: String, serverUrl: String) {\r\n const parameters = [\r\n 'VIDEO_PERFORMANCE',\r\n videoId,\r\n this.logsStack.join('\\n'),\r\n moment().format('YYYY-MM-DD hh:mm:ss'),\r\n (window as any).packageversion || 'Undefined Package Version',\r\n navigator.userAgent,\r\n serverUrl,\r\n 'no'\r\n ].map((element) =>\r\n typeof element !== 'number' ? `'${element}'` : element,\r\n )\r\n\r\n const myHeaders = new Headers()\r\n myHeaders.append(\"Content-Type\", \"text/plain\")\r\n\r\n const raw = `(${parameters.join(',')})`\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n };\r\n\r\n try {\r\n fetch(\"https://metrix.pocketnet.app/front/action/v2\", requestOptions)\r\n\r\n this.destroyLogs()\r\n } catch (error) {\r\n\r\n }\r\n }\r\n\r\n destroyLogs () {\r\n this.logsStack = []\r\n }\r\n\r\n private addLogData (data: String) {\r\n if (this.logsStack.length > ERROR_STACK_MAX_LENGTH) {\r\n this.logsStack.splice(0, ERROR_STACK_DELETE_ELEMENTS)\r\n }\r\n\r\n this.logsStack.push(data);\r\n }\r\n\r\n private buildServerLogPayload (level: Extract, message: LoggerMessage, meta?: LoggerMeta) {\r\n if (!message) return null\r\n\r\n return {\r\n message: this.buildMessageServerLogPayload(message),\r\n userAgent: navigator.userAgent,\r\n url: window.location.href,\r\n level,\r\n stackTrace: this.buildStackServerLogPayload(message, meta),\r\n meta: this.buildMetaServerLogPayload(meta)\r\n }\r\n }\r\n\r\n private buildMessageServerLogPayload (message: LoggerMessage) {\r\n if (typeof message === 'string') return message\r\n if (message instanceof Error) return message.message\r\n\r\n return JSON.stringify(message)\r\n }\r\n\r\n private buildStackServerLogPayload (message: LoggerMessage, meta?: LoggerMeta) {\r\n if (message instanceof Error) return message.stack\r\n if (meta instanceof Error) return meta.stack\r\n if (meta?.err instanceof Error) return meta.err.stack\r\n\r\n return undefined\r\n }\r\n\r\n private buildMetaServerLogPayload (meta?: LoggerMeta) {\r\n if (!meta) return undefined\r\n if (meta instanceof Error) return undefined\r\n\r\n let result: string\r\n\r\n try {\r\n result = JSON.stringify(meta, (key, value) => {\r\n if (key === 'err') return undefined\r\n\r\n return value\r\n })\r\n } catch (err) {\r\n console.error('Cannot stringify meta.', err)\r\n }\r\n\r\n return result\r\n }\r\n\r\n private runHooks (level: LoggerLevel, message: LoggerMessage, meta?: LoggerMeta) {\r\n for (const hookObj of this.hooks) {\r\n if (hookObj.level !== level) continue\r\n\r\n hookObj.hook(message, meta)\r\n }\r\n }\r\n}\r\n\r\nconst logger = window.logger || new Logger()\r\nwindow.logger = logger\r\n\r\nexport {\r\n logger,\r\n Logger\r\n}\r\n","// Thanks: https://github.com/capaj/localstorage-polyfill\r\n\r\nconst valuesMap = new Map()\r\n\r\nfunction proxify (instance: MemoryStorage) {\r\n return new Proxy(instance, {\r\n set: function (obj, prop: string | symbol, value) {\r\n if (Object.prototype.hasOwnProperty.call(MemoryStorage, prop)) {\r\n // FIXME: remove cast on typescript upgrade\r\n instance[prop as any] = value\r\n } else {\r\n instance.setItem(prop, value)\r\n }\r\n\r\n return true\r\n },\r\n get: function (target, name: string | symbol | number) {\r\n // FIXME: remove cast on typescript upgrade\r\n if (typeof instance[name as any] === 'function') {\r\n // FIXME: remove cast on typescript upgrade\r\n return instance[name as any]\r\n } else if (valuesMap.has(name)) {\r\n return instance.getItem(name)\r\n }\r\n }\r\n })\r\n}\r\n\r\nclass MemoryStorage implements Storage {\r\n [key: string]: any\r\n\r\n getItem (key: any) {\r\n const stringKey = String(key)\r\n if (valuesMap.has(key)) {\r\n return String(valuesMap.get(stringKey))\r\n }\r\n\r\n return null\r\n }\r\n\r\n setItem (key: any, val: any) {\r\n valuesMap.set(String(key), String(val))\r\n }\r\n\r\n removeItem (key: any) {\r\n valuesMap.delete(key)\r\n }\r\n\r\n clear () {\r\n valuesMap.clear()\r\n }\r\n\r\n key (i: any) {\r\n if (arguments.length === 0) {\r\n throw new TypeError('Failed to execute \"key\" on \"Storage\": 1 argument required, but only 0 present.')\r\n }\r\n\r\n const arr = Array.from(valuesMap.keys())\r\n return arr[i]\r\n }\r\n\r\n get length () {\r\n return valuesMap.size\r\n }\r\n}\r\n\r\nlet peertubeLocalStorage: Storage\r\nlet peertubeSessionStorage: Storage\r\n\r\nfunction reinitStorage () {\r\n const instanceLocalStorage = new MemoryStorage()\r\n const instanceSessionStorage = new MemoryStorage()\r\n\r\n peertubeLocalStorage = proxify(instanceLocalStorage)\r\n peertubeSessionStorage = proxify(instanceSessionStorage)\r\n}\r\n\r\ntry {\r\n peertubeLocalStorage = localStorage\r\n peertubeSessionStorage = sessionStorage\r\n} catch (err) {\r\n // support Firefox and other browsers using an exception rather than null\r\n reinitStorage()\r\n}\r\n\r\n// support Brave and other browsers using null rather than an exception\r\nif (!peertubeLocalStorage || !peertubeSessionStorage) {\r\n reinitStorage()\r\n}\r\n\r\nexport {\r\n peertubeLocalStorage,\r\n peertubeSessionStorage\r\n}\r\n","export const UserLocalStorageKeys = {\r\n ID: 'id',\r\n USERNAME: 'username',\r\n ROLE: 'role',\r\n EMAIL: 'email',\r\n\r\n VIDEOS_HISTORY_ENABLED: 'videos-history-enabled',\r\n NSFW_POLICY: 'nsfw_policy',\r\n P2P_ENABLED: 'peertube-videojs-' + 'webtorrent_enabled',\r\n\r\n AUTO_PLAY_VIDEO: 'auto_play_video',\r\n AUTO_PLAY_NEXT_VIDEO: 'auto_play_next_video',\r\n AUTO_PLAY_VIDEO_PLAYLIST: 'auto_play_video_playlist',\r\n\r\n THEME: 'theme',\r\n LAST_ACTIVE_THEME: 'last_active_theme',\r\n\r\n VIDEO_LANGUAGES: 'video_languages'\r\n}\r\n\r\nexport const UserTokenLocalStorageKeys = {\r\n ACCESS_TOKEN: 'access_token',\r\n REFRESH_TOKEN: 'refresh_token',\r\n TOKEN_TYPE: 'token_type'\r\n}\r\n","import { UserTokenLocalStorageKeys } from './user-local-storage-keys'\r\n\r\nexport class UserTokens {\r\n accessToken: string\r\n refreshToken: string\r\n tokenType: string\r\n\r\n constructor (hash?: Partial) {\r\n if (hash) {\r\n this.accessToken = hash.accessToken\r\n this.refreshToken = hash.refreshToken\r\n\r\n if (hash.tokenType === 'bearer') {\r\n this.tokenType = 'Bearer'\r\n } else {\r\n this.tokenType = hash.tokenType\r\n }\r\n }\r\n }\r\n\r\n static getUserTokens (localStorage: Pick) {\r\n const accessTokenLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.ACCESS_TOKEN)\r\n const refreshTokenLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.REFRESH_TOKEN)\r\n const tokenTypeLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.TOKEN_TYPE)\r\n\r\n if (!accessTokenLocalStorage || !refreshTokenLocalStorage || !tokenTypeLocalStorage) return null\r\n\r\n return new UserTokens({\r\n accessToken: accessTokenLocalStorage,\r\n refreshToken: refreshTokenLocalStorage,\r\n tokenType: tokenTypeLocalStorage\r\n })\r\n }\r\n\r\n static saveToLocalStorage (localStorage: Pick, tokens: UserTokens) {\r\n localStorage.setItem(UserTokenLocalStorageKeys.ACCESS_TOKEN, tokens.accessToken)\r\n localStorage.setItem(UserTokenLocalStorageKeys.REFRESH_TOKEN, tokens.refreshToken)\r\n localStorage.setItem(UserTokenLocalStorageKeys.TOKEN_TYPE, tokens.tokenType)\r\n }\r\n\r\n static flushLocalStorage (localStorage: Pick) {\r\n localStorage.removeItem(UserTokenLocalStorageKeys.ACCESS_TOKEN)\r\n localStorage.removeItem(UserTokenLocalStorageKeys.REFRESH_TOKEN)\r\n localStorage.removeItem(UserTokenLocalStorageKeys.TOKEN_TYPE)\r\n }\r\n}\r\n","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","const debug = require('debug')('bittorrent-tracker:client')\nconst EventEmitter = require('events')\nconst once = require('once')\nconst parallel = require('run-parallel')\nconst Peer = require('simple-peer')\nconst queueMicrotask = require('queue-microtask')\n\nconst common = require('./lib/common')\nconst HTTPTracker = require('./lib/client/http-tracker') // empty object in browser\nconst UDPTracker = require('./lib/client/udp-tracker') // empty object in browser\nconst WebSocketTracker = require('./lib/client/websocket-tracker')\n\n/**\n * BitTorrent tracker client.\n *\n * Find torrent peers, to help a torrent client participate in a torrent swarm.\n *\n * @param {Object} opts options object\n * @param {string|Buffer} opts.infoHash torrent info hash\n * @param {string|Buffer} opts.peerId peer id\n * @param {string|Array.} opts.announce announce\n * @param {number} opts.port torrent client listening port\n * @param {function} opts.getAnnounceOpts callback to provide data to tracker\n * @param {number} opts.rtcConfig RTCPeerConnection configuration object\n * @param {number} opts.userAgent User-Agent header for http requests\n * @param {number} opts.wrtc custom webrtc impl (useful in node.js)\n * @param {object} opts.proxyOpts proxy options (useful in node.js)\n */\nclass Client extends EventEmitter {\n constructor (opts = {}) {\n super()\n\n if (!opts.peerId) throw new Error('Option `peerId` is required')\n if (!opts.infoHash) throw new Error('Option `infoHash` is required')\n if (!opts.announce) throw new Error('Option `announce` is required')\n if (!process.browser && !opts.port) throw new Error('Option `port` is required')\n\n this.peerId = typeof opts.peerId === 'string'\n ? opts.peerId\n : opts.peerId.toString('hex')\n this._peerIdBuffer = Buffer.from(this.peerId, 'hex')\n this._peerIdBinary = this._peerIdBuffer.toString('binary')\n\n this.infoHash = typeof opts.infoHash === 'string'\n ? opts.infoHash.toLowerCase()\n : opts.infoHash.toString('hex')\n this._infoHashBuffer = Buffer.from(this.infoHash, 'hex')\n this._infoHashBinary = this._infoHashBuffer.toString('binary')\n\n debug('new client %s', this.infoHash)\n\n this.destroyed = false\n\n this._port = opts.port\n this._getAnnounceOpts = opts.getAnnounceOpts\n this._rtcConfig = opts.rtcConfig\n this._userAgent = opts.userAgent\n this._proxyOpts = opts.proxyOpts\n\n // Support lazy 'wrtc' module initialization\n // See: https://github.com/webtorrent/webtorrent-hybrid/issues/46\n this._wrtc = typeof opts.wrtc === 'function' ? opts.wrtc() : opts.wrtc\n\n let announce = typeof opts.announce === 'string'\n ? [opts.announce]\n : opts.announce == null ? [] : opts.announce\n\n // Remove trailing slash from trackers to catch duplicates\n announce = announce.map(announceUrl => {\n announceUrl = announceUrl.toString()\n if (announceUrl[announceUrl.length - 1] === '/') {\n announceUrl = announceUrl.substring(0, announceUrl.length - 1)\n }\n return announceUrl\n })\n // remove duplicates by converting to Set and back\n announce = Array.from(new Set(announce))\n\n const webrtcSupport = this._wrtc !== false && (!!this._wrtc || Peer.WEBRTC_SUPPORT)\n\n const nextTickWarn = err => {\n queueMicrotask(() => {\n this.emit('warning', err)\n })\n }\n\n this._trackers = announce\n .map(announceUrl => {\n let parsedUrl\n try {\n parsedUrl = common.parseUrl(announceUrl)\n } catch (err) {\n nextTickWarn(new Error(`Invalid tracker URL: ${announceUrl}`))\n return null\n }\n\n const port = parsedUrl.port\n if (port < 0 || port > 65535) {\n nextTickWarn(new Error(`Invalid tracker port: ${announceUrl}`))\n return null\n }\n\n const protocol = parsedUrl.protocol\n if ((protocol === 'http:' || protocol === 'https:') &&\n typeof HTTPTracker === 'function') {\n return new HTTPTracker(this, announceUrl)\n } else if (protocol === 'udp:' && typeof UDPTracker === 'function') {\n return new UDPTracker(this, announceUrl)\n } else if ((protocol === 'ws:' || protocol === 'wss:') && webrtcSupport) {\n // Skip ws:// trackers on https:// sites because they throw SecurityError\n if (protocol === 'ws:' && typeof window !== 'undefined' &&\n window.location.protocol === 'https:') {\n nextTickWarn(new Error(`Unsupported tracker protocol: ${announceUrl}`))\n return null\n }\n return new WebSocketTracker(this, announceUrl)\n } else {\n nextTickWarn(new Error(`Unsupported tracker protocol: ${announceUrl}`))\n return null\n }\n })\n .filter(Boolean)\n }\n\n /**\n * Send a `start` announce to the trackers.\n * @param {Object} opts\n * @param {number=} opts.uploaded\n * @param {number=} opts.downloaded\n * @param {number=} opts.left (if not set, calculated automatically)\n */\n start (opts) {\n opts = this._defaultAnnounceOpts(opts)\n opts.event = 'started'\n debug('send `start` %o', opts)\n this._announce(opts)\n\n // start announcing on intervals\n this._trackers.forEach(tracker => {\n tracker.setInterval()\n })\n }\n\n /**\n * Send a `stop` announce to the trackers.\n * @param {Object} opts\n * @param {number=} opts.uploaded\n * @param {number=} opts.downloaded\n * @param {number=} opts.numwant\n * @param {number=} opts.left (if not set, calculated automatically)\n */\n stop (opts) {\n opts = this._defaultAnnounceOpts(opts)\n opts.event = 'stopped'\n debug('send `stop` %o', opts)\n this._announce(opts)\n }\n\n /**\n * Send a `complete` announce to the trackers.\n * @param {Object} opts\n * @param {number=} opts.uploaded\n * @param {number=} opts.downloaded\n * @param {number=} opts.numwant\n * @param {number=} opts.left (if not set, calculated automatically)\n */\n complete (opts) {\n if (!opts) opts = {}\n opts = this._defaultAnnounceOpts(opts)\n opts.event = 'completed'\n debug('send `complete` %o', opts)\n this._announce(opts)\n }\n\n /**\n * Send a `update` announce to the trackers.\n * @param {Object} opts\n * @param {number=} opts.uploaded\n * @param {number=} opts.downloaded\n * @param {number=} opts.numwant\n * @param {number=} opts.left (if not set, calculated automatically)\n */\n update (opts) {\n opts = this._defaultAnnounceOpts(opts)\n if (opts.event) delete opts.event\n debug('send `update` %o', opts)\n this._announce(opts)\n }\n\n _announce (opts) {\n this._trackers.forEach(tracker => {\n // tracker should not modify `opts` object, it's passed to all trackers\n tracker.announce(opts)\n })\n }\n\n /**\n * Send a scrape request to the trackers.\n * @param {Object} opts\n */\n scrape (opts) {\n debug('send `scrape`')\n if (!opts) opts = {}\n this._trackers.forEach(tracker => {\n // tracker should not modify `opts` object, it's passed to all trackers\n tracker.scrape(opts)\n })\n }\n\n setInterval (intervalMs) {\n debug('setInterval %d', intervalMs)\n this._trackers.forEach(tracker => {\n tracker.setInterval(intervalMs)\n })\n }\n\n destroy (cb) {\n if (this.destroyed) return\n this.destroyed = true\n debug('destroy')\n\n const tasks = this._trackers.map(tracker => cb => {\n tracker.destroy(cb)\n })\n\n parallel(tasks, cb)\n\n this._trackers = []\n this._getAnnounceOpts = null\n }\n\n _defaultAnnounceOpts (opts = {}) {\n if (opts.numwant == null) opts.numwant = common.DEFAULT_ANNOUNCE_PEERS\n\n if (opts.uploaded == null) opts.uploaded = 0\n if (opts.downloaded == null) opts.downloaded = 0\n\n if (this._getAnnounceOpts) opts = Object.assign({}, opts, this._getAnnounceOpts())\n\n return opts\n }\n}\n\n/**\n * Simple convenience function to scrape a tracker for an info hash without needing to\n * create a Client, pass it a parsed torrent, etc. Support scraping a tracker for multiple\n * torrents at the same time.\n * @params {Object} opts\n * @param {string|Array.} opts.infoHash\n * @param {string} opts.announce\n * @param {function} cb\n */\nClient.scrape = (opts, cb) => {\n cb = once(cb)\n\n if (!opts.infoHash) throw new Error('Option `infoHash` is required')\n if (!opts.announce) throw new Error('Option `announce` is required')\n\n const clientOpts = Object.assign({}, opts, {\n infoHash: Array.isArray(opts.infoHash) ? opts.infoHash[0] : opts.infoHash,\n peerId: Buffer.from('01234567890123456789'), // dummy value\n port: 6881 // dummy value\n })\n\n const client = new Client(clientOpts)\n client.once('error', cb)\n client.once('warning', cb)\n\n let len = Array.isArray(opts.infoHash) ? opts.infoHash.length : 1\n const results = {}\n client.on('scrape', data => {\n len -= 1\n results[data.infoHash] = data\n if (len === 0) {\n client.destroy()\n const keys = Object.keys(results)\n if (keys.length === 1) {\n cb(null, results[keys[0]])\n } else {\n cb(null, results)\n }\n }\n })\n\n opts.infoHash = Array.isArray(opts.infoHash)\n ? opts.infoHash.map(infoHash => Buffer.from(infoHash, 'hex'))\n : Buffer.from(opts.infoHash, 'hex')\n client.scrape({ infoHash: opts.infoHash })\n return client\n}\n\nmodule.exports = Client\n","const EventEmitter = require('events')\n\nclass Tracker extends EventEmitter {\n constructor (client, announceUrl) {\n super()\n\n this.client = client\n this.announceUrl = announceUrl\n\n this.interval = null\n this.destroyed = false\n }\n\n setInterval (intervalMs) {\n if (intervalMs == null) intervalMs = this.DEFAULT_ANNOUNCE_INTERVAL\n\n clearInterval(this.interval)\n\n if (intervalMs) {\n this.interval = setInterval(() => {\n this.announce(this.client._defaultAnnounceOpts())\n }, intervalMs)\n if (this.interval.unref) this.interval.unref()\n }\n }\n}\n\nmodule.exports = Tracker\n","const clone = require('clone')\nconst debug = require('debug')('bittorrent-tracker:websocket-tracker')\nconst Peer = require('simple-peer')\nconst randombytes = require('randombytes')\nconst Socket = require('simple-websocket')\nconst Socks = require('socks')\n\nconst common = require('../common')\nconst Tracker = require('./tracker')\n\n// Use a socket pool, so tracker clients share WebSocket objects for the same server.\n// In practice, WebSockets are pretty slow to establish, so this gives a nice performance\n// boost, and saves browser resources.\nconst socketPool = {}\n\nconst RECONNECT_MINIMUM = 10 * 1000\nconst RECONNECT_MAXIMUM = 60 * 60 * 1000\nconst RECONNECT_VARIANCE = 5 * 60 * 1000\nconst OFFER_TIMEOUT = 50 * 1000\n\nclass WebSocketTracker extends Tracker {\n constructor (client, announceUrl) {\n super(client, announceUrl)\n debug('new websocket tracker %s', announceUrl)\n\n this.peers = {} // peers (offer id -> peer)\n this.socket = null\n\n this.reconnecting = false\n this.retries = 0\n this.reconnectTimer = null\n\n // Simple boolean flag to track whether the socket has received data from\n // the websocket server since the last time socket.send() was called.\n this.expectingResponse = false\n\n this._openSocket()\n }\n\n announce (opts) {\n if (this.destroyed || this.reconnecting) return\n if (!this.socket.connected) {\n this.socket.once('connect', () => {\n this.announce(opts)\n })\n return\n }\n\n const params = Object.assign({}, opts, {\n action: 'announce',\n info_hash: this.client._infoHashBinary,\n peer_id: this.client._peerIdBinary\n })\n if (this._trackerId) params.trackerid = this._trackerId\n\n if (opts.event === 'stopped' || opts.event === 'completed') {\n // Don't include offers with 'stopped' or 'completed' event\n this._send(params)\n } else {\n // Limit the number of offers that are generated, since it can be slow\n const numwant = Math.min(opts.numwant, 5)\n\n this._generateOffers(numwant, offers => {\n params.numwant = numwant\n params.offers = offers\n this._send(params)\n })\n }\n }\n\n scrape (opts) {\n if (this.destroyed || this.reconnecting) return\n if (!this.socket.connected) {\n this.socket.once('connect', () => {\n this.scrape(opts)\n })\n return\n }\n\n const infoHashes = (Array.isArray(opts.infoHash) && opts.infoHash.length > 0)\n ? opts.infoHash.map(infoHash => infoHash.toString('binary'))\n : (opts.infoHash && opts.infoHash.toString('binary')) || this.client._infoHashBinary\n const params = {\n action: 'scrape',\n info_hash: infoHashes\n }\n\n this._send(params)\n }\n\n destroy (cb = noop) {\n if (this.destroyed) return cb(null)\n\n this.destroyed = true\n\n clearInterval(this.interval)\n clearTimeout(this.reconnectTimer)\n\n // Destroy peers\n for (const peerId in this.peers) {\n const peer = this.peers[peerId]\n clearTimeout(peer.trackerTimeout)\n peer.destroy()\n }\n this.peers = null\n\n if (this.socket) {\n this.socket.removeListener('connect', this._onSocketConnectBound)\n this.socket.removeListener('data', this._onSocketDataBound)\n this.socket.removeListener('close', this._onSocketCloseBound)\n this.socket.removeListener('error', this._onSocketErrorBound)\n this.socket = null\n }\n\n this._onSocketConnectBound = null\n this._onSocketErrorBound = null\n this._onSocketDataBound = null\n this._onSocketCloseBound = null\n\n if (socketPool[this.announceUrl]) {\n socketPool[this.announceUrl].consumers -= 1\n }\n\n // Other instances are using the socket, so there's nothing left to do here\n if (socketPool[this.announceUrl].consumers > 0) return cb()\n\n let socket = socketPool[this.announceUrl]\n delete socketPool[this.announceUrl]\n socket.on('error', noop) // ignore all future errors\n socket.once('close', cb)\n\n let timeout\n\n // If there is no data response expected, destroy immediately.\n if (!this.expectingResponse) return destroyCleanup()\n\n // Otherwise, wait a short time for potential responses to come in from the\n // server, then force close the socket.\n timeout = setTimeout(destroyCleanup, common.DESTROY_TIMEOUT)\n\n // But, if a response comes from the server before the timeout fires, do cleanup\n // right away.\n socket.once('data', destroyCleanup)\n\n function destroyCleanup () {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n socket.removeListener('data', destroyCleanup)\n socket.destroy()\n socket = null\n }\n }\n\n _openSocket () {\n this.destroyed = false\n\n if (!this.peers) this.peers = {}\n\n this._onSocketConnectBound = () => {\n this._onSocketConnect()\n }\n this._onSocketErrorBound = err => {\n this._onSocketError(err)\n }\n this._onSocketDataBound = data => {\n this._onSocketData(data)\n }\n this._onSocketCloseBound = () => {\n this._onSocketClose()\n }\n\n this.socket = socketPool[this.announceUrl]\n if (this.socket) {\n socketPool[this.announceUrl].consumers += 1\n if (this.socket.connected) {\n this._onSocketConnectBound()\n }\n } else {\n const parsedUrl = new URL(this.announceUrl)\n let agent\n if (this.client._proxyOpts) {\n agent = parsedUrl.protocol === 'wss:' ? this.client._proxyOpts.httpsAgent : this.client._proxyOpts.httpAgent\n if (!agent && this.client._proxyOpts.socksProxy) {\n agent = new Socks.Agent(clone(this.client._proxyOpts.socksProxy), (parsedUrl.protocol === 'wss:'))\n }\n }\n this.socket = socketPool[this.announceUrl] = new Socket({ url: this.announceUrl, agent })\n this.socket.consumers = 1\n this.socket.once('connect', this._onSocketConnectBound)\n }\n\n this.socket.on('data', this._onSocketDataBound)\n this.socket.once('close', this._onSocketCloseBound)\n this.socket.once('error', this._onSocketErrorBound)\n }\n\n _onSocketConnect () {\n if (this.destroyed) return\n\n if (this.reconnecting) {\n this.reconnecting = false\n this.retries = 0\n this.announce(this.client._defaultAnnounceOpts())\n }\n }\n\n _onSocketData (data) {\n if (this.destroyed) return\n\n this.expectingResponse = false\n\n try {\n data = JSON.parse(data)\n } catch (err) {\n this.client.emit('warning', new Error('Invalid tracker response'))\n return\n }\n\n if (data.action === 'announce') {\n this._onAnnounceResponse(data)\n } else if (data.action === 'scrape') {\n this._onScrapeResponse(data)\n } else {\n this._onSocketError(new Error(`invalid action in WS response: ${data.action}`))\n }\n }\n\n _onAnnounceResponse (data) {\n if (data.info_hash !== this.client._infoHashBinary) {\n debug(\n 'ignoring websocket data from %s for %s (looking for %s: reused socket)',\n this.announceUrl, common.binaryToHex(data.info_hash), this.client.infoHash\n )\n return\n }\n\n if (data.peer_id && data.peer_id === this.client._peerIdBinary) {\n // ignore offers/answers from this client\n return\n }\n\n debug(\n 'received %s from %s for %s',\n JSON.stringify(data), this.announceUrl, this.client.infoHash\n )\n\n const failure = data['failure reason']\n if (failure) return this.client.emit('warning', new Error(failure))\n\n const warning = data['warning message']\n if (warning) this.client.emit('warning', new Error(warning))\n\n const interval = data.interval || data['min interval']\n if (interval) this.setInterval(interval * 1000)\n\n const trackerId = data['tracker id']\n if (trackerId) {\n // If absent, do not discard previous trackerId value\n this._trackerId = trackerId\n }\n\n if (data.complete != null) {\n const response = Object.assign({}, data, {\n announce: this.announceUrl,\n infoHash: common.binaryToHex(data.info_hash)\n })\n this.client.emit('update', response)\n }\n\n let peer\n if (data.offer && data.peer_id) {\n debug('creating peer (from remote offer)')\n peer = this._createPeer()\n peer.id = common.binaryToHex(data.peer_id)\n peer.once('signal', answer => {\n const params = {\n action: 'announce',\n info_hash: this.client._infoHashBinary,\n peer_id: this.client._peerIdBinary,\n to_peer_id: data.peer_id,\n answer,\n offer_id: data.offer_id\n }\n if (this._trackerId) params.trackerid = this._trackerId\n this._send(params)\n })\n this.client.emit('peer', peer)\n peer.signal(data.offer)\n }\n\n if (data.answer && data.peer_id) {\n const offerId = common.binaryToHex(data.offer_id)\n peer = this.peers[offerId]\n if (peer) {\n peer.id = common.binaryToHex(data.peer_id)\n this.client.emit('peer', peer)\n peer.signal(data.answer)\n\n clearTimeout(peer.trackerTimeout)\n peer.trackerTimeout = null\n delete this.peers[offerId]\n } else {\n debug(`got unexpected answer: ${JSON.stringify(data.answer)}`)\n }\n }\n }\n\n _onScrapeResponse (data) {\n data = data.files || {}\n\n const keys = Object.keys(data)\n if (keys.length === 0) {\n this.client.emit('warning', new Error('invalid scrape response'))\n return\n }\n\n keys.forEach(infoHash => {\n // TODO: optionally handle data.flags.min_request_interval\n // (separate from announce interval)\n const response = Object.assign(data[infoHash], {\n announce: this.announceUrl,\n infoHash: common.binaryToHex(infoHash)\n })\n this.client.emit('scrape', response)\n })\n }\n\n _onSocketClose () {\n if (this.destroyed) return\n this.destroy()\n this._startReconnectTimer()\n }\n\n _onSocketError (err) {\n if (this.destroyed) return\n this.destroy()\n // errors will often happen if a tracker is offline, so don't treat it as fatal\n this.client.emit('warning', err)\n this._startReconnectTimer()\n }\n\n _startReconnectTimer () {\n const ms = Math.floor(Math.random() * RECONNECT_VARIANCE) + Math.min(Math.pow(2, this.retries) * RECONNECT_MINIMUM, RECONNECT_MAXIMUM)\n\n this.reconnecting = true\n clearTimeout(this.reconnectTimer)\n this.reconnectTimer = setTimeout(() => {\n this.retries++\n this._openSocket()\n }, ms)\n if (this.reconnectTimer.unref) this.reconnectTimer.unref()\n\n debug('reconnecting socket in %s ms', ms)\n }\n\n _send (params) {\n if (this.destroyed) return\n this.expectingResponse = true\n const message = JSON.stringify(params)\n debug('send %s', message)\n this.socket.send(message)\n }\n\n _generateOffers (numwant, cb) {\n const self = this\n const offers = []\n debug('generating %s offers', numwant)\n\n for (let i = 0; i < numwant; ++i) {\n generateOffer()\n }\n checkDone()\n\n function generateOffer () {\n const offerId = randombytes(20).toString('hex')\n debug('creating peer (from _generateOffers)')\n const peer = self.peers[offerId] = self._createPeer({ initiator: true })\n peer.once('signal', offer => {\n offers.push({\n offer,\n offer_id: common.hexToBinary(offerId)\n })\n checkDone()\n })\n peer.trackerTimeout = setTimeout(() => {\n debug('tracker timeout: destroying peer')\n peer.trackerTimeout = null\n delete self.peers[offerId]\n peer.destroy()\n }, OFFER_TIMEOUT)\n if (peer.trackerTimeout.unref) peer.trackerTimeout.unref()\n }\n\n function checkDone () {\n if (offers.length === numwant) {\n debug('generated %s offers', numwant)\n cb(offers)\n }\n }\n }\n\n _createPeer (opts) {\n const self = this\n\n opts = Object.assign({\n trickle: false,\n config: self.client._rtcConfig,\n wrtc: self.client._wrtc\n }, opts)\n\n const peer = new Peer(opts)\n\n peer.once('error', onError)\n peer.once('connect', onConnect)\n\n return peer\n\n // Handle peer 'error' events that are fired *before* the peer is emitted in\n // a 'peer' event.\n function onError (err) {\n self.client.emit('warning', new Error(`Connection error: ${err.message}`))\n peer.destroy()\n }\n\n // Once the peer is emitted in a 'peer' event, then it's the consumer's\n // responsibility to listen for errors, so the listeners are removed here.\n function onConnect () {\n peer.removeListener('error', onError)\n peer.removeListener('connect', onConnect)\n }\n }\n}\n\nWebSocketTracker.prototype.DEFAULT_ANNOUNCE_INTERVAL = 30 * 1000 // 30 seconds\n// Normally this shouldn't be accessed but is occasionally useful\nWebSocketTracker._socketPool = socketPool\n\nfunction noop () {}\n\nmodule.exports = WebSocketTracker\n","/**\n * Functions/constants needed by both the client and server.\n */\n\nexports.DEFAULT_ANNOUNCE_PEERS = 50\nexports.MAX_ANNOUNCE_PEERS = 82\n\nexports.binaryToHex = str => {\n if (typeof str !== 'string') {\n str = String(str)\n }\n return Buffer.from(str, 'binary').toString('hex')\n}\n\nexports.hexToBinary = str => {\n if (typeof str !== 'string') {\n str = String(str)\n }\n return Buffer.from(str, 'hex').toString('binary')\n}\n\n// HACK: Fix for WHATWG URL object not parsing non-standard URL schemes like\n// 'udp:'. Just replace it with 'http:' since we only need a few properties.\n//\n// Note: Only affects Chrome and Firefox. Works fine in Node.js, Safari, and\n// Edge.\n//\n// Note: UDP trackers aren't used in the normal browser build, but they are\n// used in a Chrome App build (i.e. by Brave Browser).\n//\n// Bug reports:\n// - Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=734880\n// - Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1374505\nexports.parseUrl = str => {\n const url = new URL(str.replace(/^udp:/, 'http:'))\n\n if (str.match(/^udp:/)) {\n Object.defineProperties(url, {\n href: { value: url.href.replace(/^http/, 'udp') },\n protocol: { value: url.protocol.replace(/^http/, 'udp') },\n origin: { value: url.origin.replace(/^http/, 'udp') }\n })\n }\n\n return url\n}\n\nconst config = require('./common-node')\nObject.assign(exports, config)\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","var parent = require('../../stable/reflect');\n\nmodule.exports = parent;\n","require('../../modules/es.object.to-string');\nrequire('../../modules/es.reflect.apply');\nrequire('../../modules/es.reflect.construct');\nrequire('../../modules/es.reflect.define-property');\nrequire('../../modules/es.reflect.delete-property');\nrequire('../../modules/es.reflect.get');\nrequire('../../modules/es.reflect.get-own-property-descriptor');\nrequire('../../modules/es.reflect.get-prototype-of');\nrequire('../../modules/es.reflect.has');\nrequire('../../modules/es.reflect.is-extensible');\nrequire('../../modules/es.reflect.own-keys');\nrequire('../../modules/es.reflect.prevent-extensions');\nrequire('../../modules/es.reflect.set');\nrequire('../../modules/es.reflect.set-prototype-of');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect;\n","module.exports = require('../../full/reflect');\n","var parent = require('../../actual/reflect');\nrequire('../../modules/esnext.reflect.define-metadata');\nrequire('../../modules/esnext.reflect.delete-metadata');\nrequire('../../modules/esnext.reflect.get-metadata');\nrequire('../../modules/esnext.reflect.get-metadata-keys');\nrequire('../../modules/esnext.reflect.get-own-metadata');\nrequire('../../modules/esnext.reflect.get-own-metadata-keys');\nrequire('../../modules/esnext.reflect.has-metadata');\nrequire('../../modules/esnext.reflect.has-own-metadata');\nrequire('../../modules/esnext.reflect.metadata');\n\nmodule.exports = parent;\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 isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\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 isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\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","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\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 bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar Map = getBuiltIn('Map');\nvar MapPrototype = Map.prototype;\nvar mapForEach = uncurryThis(MapPrototype.forEach);\nvar mapHas = uncurryThis(MapPrototype.has);\nvar mapSet = uncurryThis(MapPrototype.set);\nvar push = uncurryThis([].push);\n\n// `Array.prototype.uniqueBy` method\n// https://github.com/tc39/proposal-array-unique\nmodule.exports = function uniqueBy(resolver) {\n var that = toObject(this);\n var length = lengthOfArrayLike(that);\n var result = arraySpeciesCreate(that, 0);\n var map = new Map();\n var resolverFunction = resolver != null ? aCallable(resolver) : function (value) {\n return value;\n };\n var index, item, key;\n for (index = 0; index < length; index++) {\n item = that[index];\n key = resolverFunction(item);\n if (!mapHas(map, key)) mapSet(map, key, item);\n }\n mapForEach(map, function (value) {\n push(result, value);\n });\n return result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\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","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) splice(this.entries, index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n defineBuiltIns(Prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && hasOwn(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && hasOwn(data, state.id);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return Constructor;\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\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 fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\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","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\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 try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\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 defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\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","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\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 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 fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\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 uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\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","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\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 classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\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 $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\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","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\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 bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\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 if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\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","/* 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","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\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 hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\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","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\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 global = require('../internals/global');\n\nmodule.exports = global;\n","// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.map');\nrequire('../modules/es.weak-map');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar shared = require('../internals/shared');\n\nvar Map = getBuiltIn('Map');\nvar WeakMap = getBuiltIn('WeakMap');\nvar push = uncurryThis([].push);\n\nvar metadata = shared('metadata');\nvar store = metadata.store || (metadata.store = new WeakMap());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\n\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\n\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\n\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\n\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { push(keys, key); });\n return keys;\n};\n\nvar toMetadataKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\n\nmodule.exports = {\n store: store,\n getMap: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n toKey: toMetadataKey\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","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\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.24.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.24.0/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 $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 collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar functionApply = require('../internals/function-apply');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n // eslint-disable-next-line es-x/no-reflect -- required for testing\n Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n apply: function apply(target, thisArgument, argumentsList) {\n return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar fails = require('../internals/fails');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n // eslint-disable-next-line es-x/no-reflect -- required for testing\n Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n var key = toPropertyKey(propertyKey);\n anObject(attributes);\n try {\n definePropertyModule.f(target, key, attributes);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar anObject = require('../internals/an-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar objectGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(target) {\n return objectGetPrototypeOf(anObject(target));\n }\n});\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n if (descriptor) return isDataDescriptor(descriptor)\n ? descriptor.value\n : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\n});\n","var $ = require('../internals/export');\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar $isExtensible = require('../internals/object-is-extensible');\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible(target);\n }\n});\n","var $ = require('../internals/export');\nvar ownKeys = require('../internals/own-keys');\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n ownKeys: ownKeys\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar anObject = require('../internals/an-object');\nvar FREEZING = require('../internals/freezing');\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n if (objectPreventExtensions) objectPreventExtensions(target);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\nvar objectSetPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n anObject(target);\n aPossiblePrototype(proto);\n try {\n objectSetPrototypeOf(target, proto);\n return true;\n } catch (error) {\n return false;\n }\n }\n});\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar fails = require('../internals/fails');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n var existingDescriptor, prototype, setter;\n if (!ownDescriptor) {\n if (isObject(prototype = getPrototypeOf(target))) {\n return set(prototype, propertyKey, V, receiver);\n }\n ownDescriptor = createPropertyDescriptor(0);\n }\n if (isDataDescriptor(ownDescriptor)) {\n if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n } else {\n setter = ownDescriptor.set;\n if (setter === undefined) return false;\n call(setter, receiver, V);\n } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n var Constructor = function () { /* empty */ };\n var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n // eslint-disable-next-line es-x/no-reflect -- required for testing\n return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n set: set\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar isExtensible = require('../internals/object-is-extensible');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.enable();\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n var nativeHas = uncurryThis(WeakMapPrototype.has);\n var nativeGet = uncurryThis(WeakMapPrototype.get);\n var nativeSet = uncurryThis(WeakMapPrototype.set);\n defineBuiltIns(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete(this, key) || state.frozen['delete'](key);\n } return nativeDelete(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) || state.frozen.has(key);\n } return nativeHas(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n } return nativeGet(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n } else nativeSet(this, key, value);\n return this;\n }\n });\n}\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.defineMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) {\n var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]);\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar getOrCreateMetadataMap = ReflectMetadataModule.getMap;\nvar store = ReflectMetadataModule.store;\n\n// `Reflect.deleteMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar $arrayUniqueBy = require('../internals/array-unique-by');\n\nvar arrayUniqueBy = uncurryThis($arrayUniqueBy);\nvar concat = uncurryThis([].concat);\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? arrayUniqueBy(concat(oKeys, pKeys)) : pKeys : oKeys;\n};\n\n// `Reflect.getMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryMetadataKeys(anObject(target), targetKey);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\n// `Reflect.getMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryOwnMetadataKeys(anObject(target), targetKey);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\n// `Reflect.hasMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.hasOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.metadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, key) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key));\n };\n }\n});\n","var parent = require('../../es/reflect');\n\nmodule.exports = parent;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\n/**\n * @typedef {{ [key: string]: any }} Extensions\n * @typedef {Error} Err\n * @property {string} message\n */\n\n/**\n *\n * @param {Error} obj\n * @param {Extensions} props\n * @returns {Error & Extensions}\n */\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\n/**\n *\n * @param {any} err - An Error\n * @param {string|Extensions} code - A string code or props to set on the error\n * @param {Extensions} [props] - Props to set on the error\n * @returns {Error & Extensions}\n */\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = '';\n }\n\n if (code) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n // @ts-ignore\n const output = assign(new ErrClass(), props);\n\n return output;\n }\n}\n\nmodule.exports = createError;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// originally pulled out of simple-peer\n\nmodule.exports = function getBrowserRTC () {\n if (typeof globalThis === 'undefined') return null\n var wrtc = {\n RTCPeerConnection: globalThis.RTCPeerConnection || globalThis.mozRTCPeerConnection ||\n globalThis.webkitRTCPeerConnection,\n RTCSessionDescription: globalThis.RTCSessionDescription ||\n globalThis.mozRTCSessionDescription || globalThis.webkitRTCSessionDescription,\n RTCIceCandidate: globalThis.RTCIceCandidate || globalThis.mozRTCIceCandidate ||\n globalThis.webkitRTCIceCandidate\n }\n if (!wrtc.RTCPeerConnection) return null\n return wrtc\n}\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n // Keyboard Events\n if (searchInput && 'object' === typeof searchInput) {\n var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n if (hasKeyCode) searchInput = hasKeyCode\n }\n\n // Numbers\n if ('number' === typeof searchInput) return names[searchInput]\n\n // Everything else (cast to string)\n var search = String(searchInput)\n\n // check codes\n var foundNamedKey = codes[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // check aliases\n var foundNamedKey = aliases[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // weird character?\n if (search.length === 1) return search.charCodeAt(0)\n\n return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n if (event && 'object' === typeof event) {\n var keyCode = event.which || event.keyCode || event.charCode\n if (keyCode === null || keyCode === undefined) { return false; }\n if (typeof nameOrCode === 'string') {\n // check codes\n var foundNamedKey = codes[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n \n // check aliases\n var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n } else if (typeof nameOrCode === 'number') {\n return nameOrCode === keyCode;\n }\n return false;\n }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n * exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'ctrl': 17,\n 'alt': 18,\n 'pause/break': 19,\n 'caps lock': 20,\n 'esc': 27,\n 'space': 32,\n 'page up': 33,\n 'page down': 34,\n 'end': 35,\n 'home': 36,\n 'left': 37,\n 'up': 38,\n 'right': 39,\n 'down': 40,\n 'insert': 45,\n 'delete': 46,\n 'command': 91,\n 'left command': 91,\n 'right command': 93,\n 'numpad *': 106,\n 'numpad +': 107,\n 'numpad -': 109,\n 'numpad .': 110,\n 'numpad /': 111,\n 'num lock': 144,\n 'scroll lock': 145,\n 'my computer': 182,\n 'my calculator': 183,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n 'windows': 91,\n '⇧': 16,\n '⌥': 18,\n '⌃': 17,\n '⌘': 91,\n 'ctl': 17,\n 'control': 17,\n 'option': 18,\n 'pause': 19,\n 'break': 19,\n 'caps': 20,\n 'return': 13,\n 'escape': 27,\n 'spc': 32,\n 'spacebar': 32,\n 'pgup': 33,\n 'pgdn': 34,\n 'ins': 45,\n 'del': 46,\n 'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n * exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n codes[alias] = aliases[alias]\n}\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\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.4\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.4';\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 * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BandwidthApproximator = void 0;\r\nconst debug_1 = __importDefault(require(\"debug\"));\r\nconst debug = (0, debug_1.default)(\"p2pml:bandwidth-approximator\");\r\nconst SMOOTH_INTERVAL = 4 * 1000;\r\nconst MEASURE_INTERVAL = 80 * 1000;\r\nclass NumberWithTime {\r\n constructor(value, timeStamp) {\r\n this.value = value;\r\n this.timeStamp = timeStamp;\r\n }\r\n}\r\nclass BandwidthApproximator {\r\n constructor() {\r\n this.lastBytes = [];\r\n this.currentBytesSum = 0;\r\n this.lastBandwidth = [];\r\n this.addBytes = (bytes, timeStamp) => {\r\n debug(\"Add %d bytes.\", bytes);\r\n this.lastBytes.push(new NumberWithTime(bytes, timeStamp));\r\n this.currentBytesSum += bytes;\r\n while (timeStamp - this.lastBytes[0].timeStamp > SMOOTH_INTERVAL) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n this.currentBytesSum -= this.lastBytes.shift().value;\r\n }\r\n const interval = Math.min(SMOOTH_INTERVAL, timeStamp);\r\n this.lastBandwidth.push(new NumberWithTime(this.currentBytesSum / interval, timeStamp));\r\n };\r\n // in bytes per millisecond\r\n this.getBandwidth = (timeStamp) => {\r\n while (this.lastBandwidth.length > 20 && timeStamp - this.lastBandwidth[0].timeStamp > MEASURE_INTERVAL) {\r\n this.lastBandwidth.shift();\r\n }\r\n let maxBandwidth = 0;\r\n for (const bandwidth of this.lastBandwidth) {\r\n if (bandwidth.value > maxBandwidth) {\r\n maxBandwidth = bandwidth.value;\r\n }\r\n }\r\n debug(\"Max bandwidth: %d.\", maxBandwidth);\r\n return maxBandwidth;\r\n };\r\n this.getSmoothInterval = () => {\r\n return SMOOTH_INTERVAL;\r\n };\r\n this.getMeasureInterval = () => {\r\n return MEASURE_INTERVAL;\r\n };\r\n }\r\n}\r\nexports.BandwidthApproximator = BandwidthApproximator;\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HttpMediaManager = void 0;\r\nconst debug_1 = __importDefault(require(\"debug\"));\r\nconst stringly_typed_event_emitter_1 = require(\"./stringly-typed-event-emitter\");\r\nclass FilteredEmitter extends stringly_typed_event_emitter_1.STEEmitter {\r\n}\r\nclass HttpMediaManager extends FilteredEmitter {\r\n constructor(settings) {\r\n super();\r\n this.settings = settings;\r\n this.fetchRequests = new Map();\r\n this.failedSegments = new Map();\r\n this.fetch = (...args) => fetch(...args);\r\n this.debug = (0, debug_1.default)(\"p2pml:http-media-manager\");\r\n this.download = (segment, downloadedPieces) => {\r\n if (this.isDownloading(segment)) {\r\n return;\r\n }\r\n this.cleanTimedOutFailedSegments();\r\n this.emit(\"segment-start-load\", segment);\r\n const segmentUrl = segment.priority <= this.settings.skipSegmentBuilderPriority\r\n ? segment.url\r\n : this.buildSegmentUrl(segment);\r\n this.debug(\"http segment download\", segmentUrl);\r\n segment.requestUrl = segmentUrl;\r\n const fetchAbort = new AbortController();\r\n const signal = fetchAbort.signal;\r\n const headers = new Headers();\r\n if (segment.range) {\r\n headers.append(\"Range\", segment.range);\r\n downloadedPieces = undefined; // TODO: process downloadedPieces for segments with range headers too\r\n }\r\n else if (downloadedPieces !== undefined && this.settings.httpUseRanges) {\r\n let bytesDownloaded = 0;\r\n for (const piece of downloadedPieces) {\r\n bytesDownloaded += piece.byteLength;\r\n }\r\n headers.append(\"Range\", `bytes=${bytesDownloaded}-`);\r\n this.debug(\"continue download from\", bytesDownloaded);\r\n }\r\n else {\r\n downloadedPieces = undefined;\r\n }\r\n const fetchRequest = this.fetch(segmentUrl, { headers, signal });\r\n void this.setupFetchEvents(fetchRequest, segment, downloadedPieces)\r\n .catch((err) => {\r\n /**\r\n * Handling all fetch errors here\r\n */\r\n if (err.name === \"AbortError\") {\r\n /**\r\n * This may happen on video seeking\r\n * or halted video playing. In most\r\n * cases it is normal. For more info\r\n * look AbortController...\r\n */\r\n this.debug(\"Segment loading was aborted by user\", segment);\r\n return;\r\n }\r\n if (err.message === \"network error\") {\r\n this.debug(\"Segment loading is unavailable. No internet\", segment);\r\n const netError = Error(\"NETWORK_ERROR\");\r\n this.segmentFailure(segment, netError, segment.url);\r\n return;\r\n }\r\n if (err.message === \"Failed to fetch\") {\r\n /**\r\n * This error might occur in next cases:\r\n * - Network error\r\n * - Response with erroneous CORS headers\r\n * - Unsupported protocol, e.g. HTTPS\r\n * - Wrong request method\r\n */\r\n this.debug(\"Segment fetch failed\", segment);\r\n const fetchError = Error(\"FETCH_FAILED\");\r\n this.segmentFailure(segment, fetchError, segment.url);\r\n return;\r\n }\r\n });\r\n this.fetchRequests.set(segment.id, { fetchAbort, segment, initialPriority: segment.priority, segmentUrl });\r\n };\r\n this.updatePriority = (segment) => {\r\n const request = this.fetchRequests.get(segment.id);\r\n if (!request) {\r\n throw new Error(\"Cannot update priority of not downloaded segment \" + segment.id);\r\n }\r\n // Segment is now in high priority\r\n // If the segment URL changed, retry the request with the new URL\r\n if (segment.priority <= this.settings.requiredSegmentsPriority &&\r\n request.initialPriority > this.settings.requiredSegmentsPriority &&\r\n request.segmentUrl !== this.buildSegmentUrl(segment)) {\r\n this.debug(\"aborting http segment abort because the segment is now in a high priority\", segment.id);\r\n this.abort(segment);\r\n this.download(segment);\r\n }\r\n };\r\n this.abort = (segment) => {\r\n const request = this.fetchRequests.get(segment.id);\r\n if (request) {\r\n request.fetchAbort.abort();\r\n this.fetchRequests.delete(segment.id);\r\n this.debug(\"http segment abort\", segment.id);\r\n }\r\n };\r\n this.isDownloading = (segment) => {\r\n return this.fetchRequests.has(segment.id);\r\n };\r\n this.isFailed = (segment) => {\r\n const time = this.failedSegments.get(segment.id);\r\n return time !== undefined && time > this.now();\r\n };\r\n this.getActiveDownloads = () => {\r\n return this.fetchRequests;\r\n };\r\n this.getActiveDownloadsCount = () => {\r\n return this.fetchRequests.size;\r\n };\r\n this.destroy = () => {\r\n this.fetchRequests.forEach((request) => request.fetchAbort.abort());\r\n this.fetchRequests.clear();\r\n };\r\n this.setupFetchEvents = async (fetch, segment, downloadedPieces) => {\r\n const fetchResponse = await fetch;\r\n var contentLengthStr = '';\r\n if (segment && segment.range && segment.range.replace) {\r\n var chn = segment.range.replace('bytes=', '').split('-');\r\n contentLengthStr = (Number(chn[1]) - Number(chn[0]) + 1).toString();\r\n console.log('here');\r\n }\r\n //// fetch in IE, wrong Content-Length\r\n if (!contentLengthStr) {\r\n contentLengthStr = fetchResponse.headers.get(\"Content-Length\");\r\n }\r\n const contentLength = Number.parseFloat(contentLengthStr);\r\n console.log('contentLength', contentLength, contentLengthStr, segment.range);\r\n if (fetchResponse.body) {\r\n const dataReader = fetchResponse.body.getReader();\r\n const dataBytes = new Uint8Array(contentLength);\r\n let nextChunkPos = 0;\r\n if (Array.isArray(downloadedPieces) && fetchResponse.status === 206) {\r\n for (const piece of downloadedPieces) {\r\n const pieceBytes = new Uint8Array(piece);\r\n dataBytes.set(pieceBytes, nextChunkPos);\r\n nextChunkPos = piece.byteLength;\r\n }\r\n }\r\n let read;\r\n while (!(read = await dataReader.read()).done) {\r\n const chunkBytes = read.value;\r\n dataBytes.set(chunkBytes, nextChunkPos);\r\n nextChunkPos += chunkBytes.length;\r\n /** Events emitters */\r\n this.emit(\"bytes-downloaded\", segment, chunkBytes.length);\r\n if (contentLength) {\r\n this.emit(\"segment-size\", segment, contentLength);\r\n }\r\n }\r\n if (fetchResponse.status < 200 || fetchResponse.status >= 300) {\r\n const err = Error(`Segment failure with HTTP code ${fetchResponse.status}`);\r\n this.segmentFailure(segment, err, fetchResponse.url);\r\n return;\r\n }\r\n await this.segmentDownloadFinished(segment, dataBytes.buffer, fetchResponse);\r\n }\r\n else {\r\n var buffer = await fetchResponse.arrayBuffer();\r\n this.emit(\"bytes-downloaded\", segment, buffer.byteLength);\r\n if (contentLength) {\r\n this.emit(\"segment-size\", segment, contentLength);\r\n }\r\n if (fetchResponse.status < 200 || fetchResponse.status >= 300) {\r\n const err = Error(`Segment failure with HTTP code ${fetchResponse.status}`);\r\n this.segmentFailure(segment, err, fetchResponse.url);\r\n return;\r\n }\r\n await this.segmentDownloadFinished(segment, buffer, fetchResponse);\r\n }\r\n };\r\n this.segmentDownloadFinished = async (segment, data, fetchResponse) => {\r\n segment.responseUrl = fetchResponse.url;\r\n if (this.settings.segmentValidator) {\r\n try {\r\n await this.settings.segmentValidator(Object.assign(Object.assign({}, segment), { data: data }), \"http\");\r\n }\r\n catch (error) {\r\n this.debug(\"segment validator failed\", error);\r\n this.segmentFailure(segment, error, fetchResponse.url);\r\n return;\r\n }\r\n }\r\n this.fetchRequests.delete(segment.id);\r\n this.emit(\"segment-loaded\", segment, data);\r\n };\r\n this.segmentFailure = (segment, error, responseUrl) => {\r\n segment.responseUrl = responseUrl;\r\n this.fetchRequests.delete(segment.id);\r\n this.failedSegments.set(segment.id, this.now() + this.settings.httpFailedSegmentTimeout);\r\n this.emit(\"segment-error\", segment, error);\r\n };\r\n this.cleanTimedOutFailedSegments = () => {\r\n const now = this.now();\r\n const candidates = [];\r\n this.failedSegments.forEach((time, id) => {\r\n if (time < now) {\r\n candidates.push(id);\r\n }\r\n });\r\n candidates.forEach((id) => this.failedSegments.delete(id));\r\n };\r\n this.now = () => performance.now();\r\n if (settings.localTransport) {\r\n this.fetch = settings.localTransport;\r\n }\r\n }\r\n buildSegmentUrl(segment) {\r\n if (this.settings.segmentUrlBuilder) {\r\n return this.settings.segmentUrlBuilder(segment);\r\n }\r\n return segment.url;\r\n }\r\n}\r\nexports.HttpMediaManager = HttpMediaManager;\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HybridLoader = void 0;\r\nconst debug_1 = __importDefault(require(\"debug\"));\r\nconst events_1 = require(\"events\");\r\nconst simple_peer_1 = __importDefault(require(\"simple-peer\"));\r\nconst loader_interface_1 = require(\"./loader-interface\");\r\nconst http_media_manager_1 = require(\"./http-media-manager\");\r\nconst p2p_media_manager_1 = require(\"./p2p-media-manager\");\r\nconst media_peer_1 = require(\"./media-peer\");\r\nconst bandwidth_approximator_1 = require(\"./bandwidth-approximator\");\r\nconst segments_memory_storage_1 = require(\"./segments-memory-storage\");\r\nconst defaultSettings = {\r\n cachedSegmentExpiration: 5 * 60 * 1000,\r\n cachedSegmentsCount: 90,\r\n useP2P: true,\r\n consumeOnly: false,\r\n requiredSegmentsPriority: 1,\r\n skipSegmentBuilderPriority: 1,\r\n simultaneousHttpDownloads: 2,\r\n httpDownloadProbability: 0.1,\r\n httpDownloadProbabilityInterval: 1000,\r\n httpDownloadProbabilitySkipIfNoPeers: false,\r\n httpFailedSegmentTimeout: 10000,\r\n httpDownloadMaxPriority: 20,\r\n httpDownloadInitialTimeout: 0,\r\n httpDownloadInitialTimeoutPerSegment: 4000,\r\n httpUseRanges: false,\r\n simultaneousP2PDownloads: 3,\r\n p2pDownloadMaxPriority: 20,\r\n p2pSegmentDownloadTimeout: 60000,\r\n webRtcMaxMessageSize: 64 * 1024 - 1,\r\n trackerAnnounce: [\"wss://tracker.novage.com.ua\", \"wss://tracker.openwebtorrent.com\"],\r\n peerRequestsPerAnnounce: 10,\r\n rtcConfig: simple_peer_1.default.config,\r\n};\r\nclass HybridLoader extends events_1.EventEmitter {\r\n constructor(settings = {}) {\r\n super();\r\n this.debug = (0, debug_1.default)(\"p2pml:hybrid-loader\");\r\n this.debugSegments = (0, debug_1.default)(\"p2pml:hybrid-loader-segments\");\r\n this.segmentsQueue = [];\r\n this.bandwidthApproximator = new bandwidth_approximator_1.BandwidthApproximator();\r\n this.httpDownloadInitialTimeoutTimestamp = -Infinity;\r\n this.createHttpManager = () => {\r\n return new http_media_manager_1.HttpMediaManager(this.settings);\r\n };\r\n this.createP2PManager = () => {\r\n return new p2p_media_manager_1.P2PMediaManager(this.segmentsStorage, this.settings);\r\n };\r\n this.load = async (segments, streamSwarmId) => {\r\n this.initRandomDownloadIntervalIfNeeded();\r\n if (segments.length > 0) {\r\n this.masterSwarmId = segments[0].masterSwarmId;\r\n }\r\n if (this.masterSwarmId !== undefined) {\r\n this.p2pManager.setStreamSwarmId(streamSwarmId, this.masterSwarmId);\r\n }\r\n this.debug(\"load segments\");\r\n // stop all http requests and p2p downloads for segments that are not in the new load\r\n let updateSegmentsMap = this.abortUnknownSegments(segments);\r\n if (this.debug.enabled) {\r\n for (const segment of segments) {\r\n if (!this.segmentsQueue.find((f) => f.id === segment.id)) {\r\n this.debug(\"add segment\", segment.id);\r\n }\r\n }\r\n }\r\n this.segmentsQueue = segments;\r\n if (this.masterSwarmId === undefined) {\r\n return;\r\n }\r\n let storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n updateSegmentsMap = this.processSegmentsQueue(storageSegments) || updateSegmentsMap;\r\n if (await this.cleanSegmentsStorage()) {\r\n storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n updateSegmentsMap = true;\r\n }\r\n if (updateSegmentsMap && !this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n };\r\n this.getSegment = async (id) => {\r\n return this.masterSwarmId === undefined ? undefined : this.segmentsStorage.getSegment(id, this.masterSwarmId);\r\n };\r\n this.getSettings = () => {\r\n return this.settings;\r\n };\r\n this.getDetails = () => {\r\n return {\r\n peerId: this.p2pManager.getPeerId(),\r\n };\r\n };\r\n this.getBandwidthEstimate = () => {\r\n return this.bandwidthApproximator.getBandwidth(this.now());\r\n };\r\n this.destroy = async () => {\r\n if (this.httpRandomDownloadInterval !== undefined) {\r\n clearInterval(this.httpRandomDownloadInterval);\r\n this.httpRandomDownloadInterval = undefined;\r\n }\r\n this.httpDownloadInitialTimeoutTimestamp = -Infinity;\r\n this.segmentsQueue = [];\r\n this.httpManager.destroy();\r\n this.p2pManager.destroy();\r\n this.masterSwarmId = undefined;\r\n await this.segmentsStorage.destroy();\r\n };\r\n this.processInitialSegmentTimeout = async () => {\r\n if (this.httpRandomDownloadInterval === undefined) {\r\n return; // Instance destroyed\r\n }\r\n if (this.masterSwarmId !== undefined) {\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n if (this.processSegmentsQueue(storageSegments) && !this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n }\r\n if (this.httpDownloadInitialTimeoutTimestamp !== -Infinity) {\r\n // Set one more timeout for a next segment\r\n setTimeout(this.processInitialSegmentTimeout, this.settings.httpDownloadInitialTimeoutPerSegment);\r\n }\r\n };\r\n this.processSegmentsQueue = (storageSegments) => {\r\n const currentPriority = this.segmentsQueue.length > 0 ? this.segmentsQueue[0].priority : 0;\r\n this.debugSegments(`process segments queue. priority: ${currentPriority}, queue length: ${this.segmentsQueue.length}`);\r\n if (this.masterSwarmId === undefined || this.segmentsQueue.length === 0) {\r\n return false;\r\n }\r\n let updateSegmentsMap = false;\r\n let segmentsMap;\r\n let httpAllowed = true;\r\n if (this.httpDownloadInitialTimeoutTimestamp !== -Infinity) {\r\n let firstNotDownloadePriority;\r\n for (const segment of this.segmentsQueue) {\r\n if (!storageSegments.has(segment.id)) {\r\n firstNotDownloadePriority = segment.priority;\r\n break;\r\n }\r\n }\r\n const httpTimeout = this.now() - this.httpDownloadInitialTimeoutTimestamp;\r\n httpAllowed =\r\n httpTimeout >= this.settings.httpDownloadInitialTimeout ||\r\n (firstNotDownloadePriority !== undefined &&\r\n httpTimeout > this.settings.httpDownloadInitialTimeoutPerSegment &&\r\n firstNotDownloadePriority <= 0);\r\n if (httpAllowed) {\r\n this.debugSegments(\"cancel initial HTTP download timeout - timed out\");\r\n this.httpDownloadInitialTimeoutTimestamp = -Infinity;\r\n }\r\n }\r\n let scheduleNewProcessQueue = false;\r\n for (let index = 0; index < this.segmentsQueue.length; index++) {\r\n const segment = this.segmentsQueue[index];\r\n if (storageSegments.has(segment.id)) {\r\n continue;\r\n }\r\n // Segment priority changed, notify http manager\r\n if (this.httpManager.isDownloading(segment)) {\r\n this.httpManager.updatePriority(segment);\r\n continue;\r\n }\r\n const tryHTTP = httpAllowed && segment.priority <= this.settings.requiredSegmentsPriority;\r\n if (tryHTTP && !this.httpManager.isFailed(segment)) {\r\n // Download required segments over HTTP\r\n if (this.httpManager.getActiveDownloadsCount() >= this.settings.simultaneousHttpDownloads) {\r\n // Not enough HTTP download resources. Abort one of the HTTP downloads.\r\n for (let i = this.segmentsQueue.length - 1; i > index; i--) {\r\n const segmentToAbort = this.segmentsQueue[i];\r\n if (this.httpManager.isDownloading(segmentToAbort)) {\r\n this.debugSegments(\"cancel HTTP download\", segmentToAbort.priority, segmentToAbort.id);\r\n this.httpManager.abort(segmentToAbort);\r\n break;\r\n }\r\n }\r\n }\r\n if (this.httpManager.getActiveDownloadsCount() < this.settings.simultaneousHttpDownloads) {\r\n // Abort P2P download of the required segment if any and force HTTP download\r\n const downloadedPieces = this.p2pManager.abort(segment);\r\n this.httpManager.download(segment, downloadedPieces);\r\n this.debugSegments(\"HTTP download (priority)\", segment.priority, segment.id);\r\n updateSegmentsMap = true;\r\n continue;\r\n }\r\n }\r\n // We wanted to download a failed segment through HTTP, but we could not because of the timeout.\r\n // Then we need to schedule another processing queue task\r\n if (tryHTTP && this.httpManager.isFailed(segment)) {\r\n scheduleNewProcessQueue = true;\r\n }\r\n if (this.p2pManager.isDownloading(segment)) {\r\n continue;\r\n }\r\n if (segment.priority <= this.settings.requiredSegmentsPriority) {\r\n // Download required segments over P2P\r\n segmentsMap = segmentsMap ? segmentsMap : this.p2pManager.getOverallSegmentsMap();\r\n if (segmentsMap.get(segment.id) !== media_peer_1.MediaPeerSegmentStatus.Loaded) {\r\n continue;\r\n }\r\n if (this.p2pManager.getActiveDownloadsCount() >= this.settings.simultaneousP2PDownloads) {\r\n // Not enough P2P download resources. Abort one of the P2P downloads.\r\n for (let i = this.segmentsQueue.length - 1; i > index; i--) {\r\n const segmentToAbort = this.segmentsQueue[i];\r\n if (this.p2pManager.isDownloading(segmentToAbort)) {\r\n this.debugSegments(\"cancel P2P download\", segmentToAbort.priority, segmentToAbort.id);\r\n this.p2pManager.abort(segmentToAbort);\r\n break;\r\n }\r\n }\r\n }\r\n if (this.p2pManager.getActiveDownloadsCount() < this.settings.simultaneousP2PDownloads) {\r\n if (this.p2pManager.download(segment)) {\r\n this.debugSegments(\"P2P download (priority)\", segment.priority, segment.id);\r\n continue;\r\n }\r\n }\r\n continue;\r\n }\r\n if (this.p2pManager.getActiveDownloadsCount() < this.settings.simultaneousP2PDownloads &&\r\n segment.priority <= this.settings.p2pDownloadMaxPriority) {\r\n if (this.p2pManager.download(segment)) {\r\n this.debugSegments(\"P2P download\", segment.priority, segment.id);\r\n }\r\n }\r\n }\r\n if (scheduleNewProcessQueue) {\r\n setTimeout(async () => {\r\n if (this.masterSwarmId === undefined)\r\n return;\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n this.processSegmentsQueue(storageSegments);\r\n }, this.settings.httpFailedSegmentTimeout);\r\n }\r\n return updateSegmentsMap;\r\n };\r\n this.downloadRandomSegmentOverHttp = async () => {\r\n if (this.masterSwarmId === undefined ||\r\n this.httpRandomDownloadInterval === undefined ||\r\n this.httpDownloadInitialTimeoutTimestamp !== -Infinity ||\r\n this.httpManager.getActiveDownloadsCount() >= this.settings.simultaneousHttpDownloads ||\r\n (this.settings.httpDownloadProbabilitySkipIfNoPeers && this.p2pManager.getPeers().size === 0) ||\r\n this.settings.consumeOnly) {\r\n return;\r\n }\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n const segmentsMap = this.p2pManager.getOverallSegmentsMap();\r\n const pendingQueue = this.segmentsQueue.filter((s) => !this.p2pManager.isDownloading(s) &&\r\n !this.httpManager.isDownloading(s) &&\r\n !segmentsMap.has(s.id) &&\r\n !this.httpManager.isFailed(s) &&\r\n s.priority <= this.settings.httpDownloadMaxPriority &&\r\n !storageSegments.has(s.id));\r\n if (pendingQueue.length === 0) {\r\n return;\r\n }\r\n if (Math.random() > this.settings.httpDownloadProbability * pendingQueue.length) {\r\n return;\r\n }\r\n const segment = pendingQueue[Math.floor(Math.random() * pendingQueue.length)];\r\n this.debugSegments(\"HTTP download (random)\", segment.priority, segment.id);\r\n this.httpManager.download(segment);\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n };\r\n this.onSegmentStartLoad = (method, segment) => {\r\n this.emit(loader_interface_1.Events.SegmentStartLoad, method, segment);\r\n };\r\n this.onPieceBytesDownloaded = (method, segment, bytes, peerId) => {\r\n if (method == 'http') {\r\n this.bandwidthApproximator.addBytes(bytes, this.now());\r\n }\r\n this.emit(loader_interface_1.Events.PieceBytesDownloaded, method, segment, bytes, peerId);\r\n };\r\n this.onPieceBytesUploaded = (method, segment, bytes, peerId) => {\r\n this.emit(loader_interface_1.Events.PieceBytesUploaded, method, segment, bytes, peerId);\r\n };\r\n this.onSegmentLoaded = async (segment, data, peerId) => {\r\n this.debugSegments(\"segment loaded\", segment.id, segment.id);\r\n if (this.masterSwarmId === undefined) {\r\n return;\r\n }\r\n segment.data = data;\r\n segment.downloadBandwidth = this.bandwidthApproximator.getBandwidth(this.now());\r\n await this.segmentsStorage.storeSegment(segment);\r\n this.emit(loader_interface_1.Events.SegmentLoaded, segment, peerId);\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n this.processSegmentsQueue(storageSegments);\r\n if (!this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n };\r\n this.onSegmentError = async (segment, details, peerId) => {\r\n this.debugSegments(\"segment error\", segment.id, segment.id, peerId, details);\r\n this.emit(loader_interface_1.Events.SegmentError, segment, details, peerId);\r\n if (this.masterSwarmId !== undefined) {\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n if (this.processSegmentsQueue(storageSegments) && !this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n }\r\n };\r\n this.onSegmentSize = async (segment, size) => {\r\n this.debugSegments(\"segment size\", segment.id, size);\r\n this.emit(loader_interface_1.Events.SegmentSize, segment, size);\r\n };\r\n this.getStreamSwarmId = (segment) => {\r\n return segment.streamId === undefined ? segment.masterSwarmId : `${segment.masterSwarmId}+${segment.streamId}`;\r\n };\r\n this.createSegmentsMap = (storageSegments) => {\r\n const segmentsMap = {};\r\n const addSegmentToMap = (segment, status) => {\r\n const streamSwarmId = this.getStreamSwarmId(segment);\r\n const segmentId = segment.sequence;\r\n let segmentsIdsAndStatuses = segmentsMap[streamSwarmId];\r\n if (segmentsIdsAndStatuses === undefined) {\r\n segmentsIdsAndStatuses = [\"\", []];\r\n segmentsMap[streamSwarmId] = segmentsIdsAndStatuses;\r\n }\r\n const segmentsStatuses = segmentsIdsAndStatuses[1];\r\n segmentsIdsAndStatuses[0] += segmentsStatuses.length === 0 ? segmentId : `|${segmentId}`;\r\n segmentsStatuses.push(status);\r\n };\r\n for (const storageSegment of storageSegments.values()) {\r\n addSegmentToMap(storageSegment.segment, media_peer_1.MediaPeerSegmentStatus.Loaded);\r\n }\r\n for (const download of this.httpManager.getActiveDownloads().values()) {\r\n addSegmentToMap(download.segment, media_peer_1.MediaPeerSegmentStatus.LoadingByHttp);\r\n }\r\n return segmentsMap;\r\n };\r\n this.onPeerConnect = async (peer) => {\r\n this.emit(loader_interface_1.Events.PeerConnect, peer);\r\n if (!this.settings.consumeOnly && this.masterSwarmId !== undefined) {\r\n this.p2pManager.sendSegmentsMap(peer.id, this.createSegmentsMap(await this.segmentsStorage.getSegmentsMap(this.masterSwarmId)));\r\n }\r\n };\r\n this.onPeerClose = (peerId) => {\r\n this.emit(loader_interface_1.Events.PeerClose, peerId);\r\n };\r\n this.onTrackerUpdate = async (data) => {\r\n if (this.httpDownloadInitialTimeoutTimestamp !== -Infinity &&\r\n data.incomplete !== undefined &&\r\n data.incomplete <= 1) {\r\n this.debugSegments(\"cancel initial HTTP download timeout - no peers\");\r\n this.httpDownloadInitialTimeoutTimestamp = -Infinity;\r\n if (this.masterSwarmId !== undefined) {\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n if (this.processSegmentsQueue(storageSegments) && !this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n }\r\n }\r\n };\r\n this.cleanSegmentsStorage = async () => {\r\n if (this.masterSwarmId === undefined) {\r\n return false;\r\n }\r\n return this.segmentsStorage.clean(this.masterSwarmId, (id) => this.segmentsQueue.find((queueSegment) => queueSegment.id === id) !== undefined);\r\n };\r\n this.now = () => {\r\n return performance.now();\r\n };\r\n this.initRandomDownloadIntervalIfNeeded = () => {\r\n if (this.httpRandomDownloadInterval !== undefined)\r\n return;\r\n // Do once on first call\r\n this.httpRandomDownloadInterval = setInterval(this.downloadRandomSegmentOverHttp, this.settings.httpDownloadProbabilityInterval);\r\n if (this.settings.httpDownloadInitialTimeout > 0 &&\r\n this.settings.httpDownloadInitialTimeoutPerSegment > 0) {\r\n // Initialize initial HTTP download timeout (i.e. download initial segments over P2P)\r\n this.debugSegments(\"enable initial HTTP download timeout\", this.settings.httpDownloadInitialTimeout, \"per segment\", this.settings.httpDownloadInitialTimeoutPerSegment);\r\n this.httpDownloadInitialTimeoutTimestamp = this.now();\r\n setTimeout(this.processInitialSegmentTimeout, this.settings.httpDownloadInitialTimeoutPerSegment + 100);\r\n }\r\n };\r\n this.abortUnknownSegments = (segments) => {\r\n let updateSegmentsMap = false;\r\n for (const segment of this.segmentsQueue) {\r\n if (!segments.find((f) => f.id === segment.id)) {\r\n this.debug(\"remove segment\", segment.id);\r\n if (this.httpManager.isDownloading(segment)) {\r\n updateSegmentsMap = true;\r\n this.httpManager.abort(segment);\r\n }\r\n else {\r\n this.p2pManager.abort(segment);\r\n }\r\n this.emit(loader_interface_1.Events.SegmentAbort, segment);\r\n }\r\n }\r\n return updateSegmentsMap;\r\n };\r\n this.settings = Object.assign(Object.assign({}, defaultSettings), settings);\r\n const { bufferedSegmentsCount } = settings;\r\n if (typeof bufferedSegmentsCount === \"number\") {\r\n if (settings.p2pDownloadMaxPriority === undefined) {\r\n this.settings.p2pDownloadMaxPriority = bufferedSegmentsCount;\r\n }\r\n if (settings.httpDownloadMaxPriority === undefined) {\r\n this.settings.p2pDownloadMaxPriority = bufferedSegmentsCount;\r\n }\r\n }\r\n this.segmentsStorage =\r\n this.settings.segmentsStorage === undefined\r\n ? new segments_memory_storage_1.SegmentsMemoryStorage(this.settings)\r\n : this.settings.segmentsStorage;\r\n this.debug(\"loader settings\", this.settings);\r\n this.httpManager = this.createHttpManager();\r\n this.httpManager.on(\"segment-start-load\", (segment) => this.onSegmentStartLoad(\"http\", segment));\r\n this.httpManager.on(\"segment-loaded\", this.onSegmentLoaded);\r\n this.httpManager.on(\"segment-error\", this.onSegmentError);\r\n this.httpManager.on(\"segment-size\", this.onSegmentSize);\r\n this.httpManager.on(\"bytes-downloaded\", (segment, bytes) => {\r\n this.onPieceBytesDownloaded(\"http\", segment, bytes);\r\n });\r\n this.p2pManager = this.createP2PManager();\r\n this.p2pManager.on(\"segment-start-load\", (segment) => this.onSegmentStartLoad(\"p2p\", segment));\r\n this.p2pManager.on(\"segment-loaded\", this.onSegmentLoaded);\r\n this.p2pManager.on(\"segment-error\", this.onSegmentError);\r\n this.p2pManager.on(\"segment-size\", this.onSegmentSize);\r\n this.p2pManager.on(\"peer-data-updated\", async () => {\r\n if (this.masterSwarmId === undefined) {\r\n return;\r\n }\r\n const storageSegments = await this.segmentsStorage.getSegmentsMap(this.masterSwarmId);\r\n if (this.processSegmentsQueue(storageSegments) && !this.settings.consumeOnly) {\r\n this.p2pManager.sendSegmentsMapToAll(this.createSegmentsMap(storageSegments));\r\n }\r\n });\r\n this.p2pManager.on(\"bytes-downloaded\", (segment, bytes, peerId) => this.onPieceBytesDownloaded(\"p2p\", segment, bytes, peerId));\r\n this.p2pManager.on(\"bytes-uploaded\", (segment, bytes, peerId) => this.onPieceBytesUploaded(\"p2p\", segment, bytes, peerId));\r\n this.p2pManager.on(\"peer-connected\", this.onPeerConnect);\r\n this.p2pManager.on(\"peer-closed\", this.onPeerClose);\r\n this.p2pManager.on(\"tracker-update\", this.onTrackerUpdate);\r\n }\r\n}\r\nexports.HybridLoader = HybridLoader;\r\nHybridLoader.isSupported = () => {\r\n return window.RTCPeerConnection.prototype.createDataChannel !== undefined;\r\n};\r\n","\"use strict\";\r\n/**\r\n * @license Apache-2.0\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.version = void 0;\r\nexports.version = \"0.6.2\";\r\n__exportStar(require(\"./loader-interface\"), exports);\r\n__exportStar(require(\"./hybrid-loader\"), exports);\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Events = void 0;\r\nvar Events;\r\n(function (Events) {\r\n /**\r\n * Emitted when segment has been downloaded.\r\n * Args: segment\r\n */\r\n Events[\"SegmentLoaded\"] = \"segment_loaded\";\r\n /**\r\n * Emitted when an error occurred while loading the segment.\r\n * Args: segment, error\r\n */\r\n Events[\"SegmentError\"] = \"segment_error\";\r\n /**\r\n * Emitter when we the segment size is known\r\n * Args: segment, size\r\n */\r\n Events[\"SegmentSize\"] = \"segment_size\";\r\n /**\r\n * Emitted for each segment that does not hit into a new segments queue when the load() method is called.\r\n * Args: segment\r\n */\r\n Events[\"SegmentAbort\"] = \"segment_abort\";\r\n /**\r\n * Emitted when the loader started to load a segment\r\n * Args: method, segment\r\n */\r\n Events[\"SegmentStartLoad\"] = \"segment_start_load\";\r\n /**\r\n * Emitted when a peer is connected.\r\n * Args: peer\r\n */\r\n Events[\"PeerConnect\"] = \"peer_connect\";\r\n /**\r\n * Emitted when a peer is disconnected.\r\n * Args: peerId\r\n */\r\n Events[\"PeerClose\"] = \"peer_close\";\r\n /**\r\n * Emitted when a segment piece has been downloaded.\r\n * Args: method (can be \"http\" or \"p2p\" only), bytes\r\n */\r\n Events[\"PieceBytesDownloaded\"] = \"piece_bytes_downloaded\";\r\n /**\r\n * Emitted when a segment piece has been uploaded.\r\n * Args: method (can be \"p2p\" only), bytes\r\n */\r\n Events[\"PieceBytesUploaded\"] = \"piece_bytes_uploaded\";\r\n})(Events = exports.Events || (exports.Events = {}));\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MediaPeer = exports.MediaPeerSegmentStatus = void 0;\r\n/* eslint-disable @typescript-eslint/no-unsafe-call */\r\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\r\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\nconst debug_1 = __importDefault(require(\"debug\"));\r\nconst buffer_1 = require(\"buffer\");\r\nconst sha1_1 = __importDefault(require(\"sha.js/sha1\"));\r\nconst stringly_typed_event_emitter_1 = require(\"./stringly-typed-event-emitter\");\r\nvar MediaPeerCommands;\r\n(function (MediaPeerCommands) {\r\n MediaPeerCommands[MediaPeerCommands[\"SegmentData\"] = 0] = \"SegmentData\";\r\n MediaPeerCommands[MediaPeerCommands[\"SegmentAbsent\"] = 1] = \"SegmentAbsent\";\r\n MediaPeerCommands[MediaPeerCommands[\"SegmentsMap\"] = 2] = \"SegmentsMap\";\r\n MediaPeerCommands[MediaPeerCommands[\"SegmentRequest\"] = 3] = \"SegmentRequest\";\r\n MediaPeerCommands[MediaPeerCommands[\"CancelSegmentRequest\"] = 4] = \"CancelSegmentRequest\";\r\n})(MediaPeerCommands || (MediaPeerCommands = {}));\r\nvar MediaPeerSegmentStatus;\r\n(function (MediaPeerSegmentStatus) {\r\n MediaPeerSegmentStatus[MediaPeerSegmentStatus[\"Loaded\"] = 0] = \"Loaded\";\r\n MediaPeerSegmentStatus[MediaPeerSegmentStatus[\"LoadingByHttp\"] = 1] = \"LoadingByHttp\";\r\n})(MediaPeerSegmentStatus = exports.MediaPeerSegmentStatus || (exports.MediaPeerSegmentStatus = {}));\r\nclass DownloadingSegment {\r\n constructor(id, size) {\r\n this.id = id;\r\n this.size = size;\r\n this.bytesDownloaded = 0;\r\n this.pieces = [];\r\n }\r\n}\r\nclass MediaPeer extends stringly_typed_event_emitter_1.STEEmitter {\r\n constructor(\r\n // eslint-disable-next-line\r\n peer, settings) {\r\n super();\r\n this.peer = peer;\r\n this.settings = settings;\r\n this.remoteAddress = \"\";\r\n this.downloadingSegmentId = null;\r\n this.downloadingSegment = null;\r\n this.segmentsMap = new Map();\r\n this.debug = (0, debug_1.default)(\"p2pml:media-peer\");\r\n this.timer = null;\r\n this.blockedRequests = null;\r\n this.blockedRequestTime = 5000;\r\n this.onPeerConnect = () => {\r\n this.debug(\"peer connect\", this.id, this);\r\n this.remoteAddress = this.peer.remoteAddress;\r\n this.emit(\"connect\", this);\r\n };\r\n this.onPeerClose = () => {\r\n this.debug(\"peer close\", this.id, this);\r\n this.terminateSegmentRequest();\r\n this.emit(\"close\", this);\r\n };\r\n this.onPeerError = (error) => {\r\n this.debug(\"peer error\", this.id, error, this);\r\n };\r\n this.receiveSegmentPiece = (data) => {\r\n if (!this.downloadingSegment) {\r\n // The segment was not requested or canceled\r\n this.debug(\"peer segment not requested\", this.id, this);\r\n return;\r\n }\r\n this.downloadingSegment.bytesDownloaded += data.byteLength;\r\n this.downloadingSegment.pieces.push(data);\r\n const segmentId = this.downloadingSegment.id;\r\n this.emit(\"bytes-downloaded\", this, segmentId, data.byteLength);\r\n if (this.downloadingSegment.bytesDownloaded === this.downloadingSegment.size) {\r\n const segmentData = new Uint8Array(this.downloadingSegment.size);\r\n let offset = 0;\r\n for (const piece of this.downloadingSegment.pieces) {\r\n segmentData.set(new Uint8Array(piece), offset);\r\n offset += piece.byteLength;\r\n }\r\n this.debug(\"peer segment download done\", this.id, segmentId, this);\r\n this.terminateSegmentRequest();\r\n this.emit(\"segment-loaded\", this, segmentId, segmentData.buffer);\r\n }\r\n else if (this.downloadingSegment.bytesDownloaded > this.downloadingSegment.size) {\r\n this.debug(\"peer segment download bytes mismatch\", this.id, segmentId, this);\r\n this.terminateSegmentRequest();\r\n this.emit(\"segment-error\", this, segmentId, \"Too many bytes received for segment\");\r\n }\r\n };\r\n this.getJsonCommand = (data) => {\r\n const bytes = new Uint8Array(data);\r\n // Serialized JSON string check by first, second and last characters: '{\" .... }'\r\n if (bytes[0] === 123 && bytes[1] === 34 && bytes[data.byteLength - 1] === 125) {\r\n try {\r\n return JSON.parse(new TextDecoder().decode(data));\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n };\r\n this.onPeerData = (data) => {\r\n const command = this.getJsonCommand(data);\r\n if (command === null) {\r\n this.receiveSegmentPiece(data);\r\n return;\r\n }\r\n if (this.downloadingSegment) {\r\n this.debug(\"peer segment download is interrupted by a command\", this.id, this);\r\n const segmentId = this.downloadingSegment.id;\r\n this.terminateSegmentRequest();\r\n this.emit(\"segment-error\", this, segmentId, \"Segment download is interrupted by a command\");\r\n return;\r\n }\r\n this.debug(\"peer receive command\", this.id, command, this);\r\n if (this.blockedRequests) {\r\n var now = performance.now();\r\n var commandHash = new sha1_1.default().update(data.toString()).digest('hex');\r\n var time = this.blockedRequests.get(commandHash);\r\n if (time && now < time) {\r\n this.debug(\"block repeated command\");\r\n return;\r\n }\r\n this.blockedRequests.forEach((time, key, map) => {\r\n if (now > time)\r\n map.delete(key);\r\n });\r\n this.blockedRequests.set(commandHash, now + this.blockedRequestTime);\r\n }\r\n switch (command.c) {\r\n case MediaPeerCommands.SegmentsMap:\r\n this.segmentsMap = this.createSegmentsMap(command.m);\r\n this.emit(\"data-updated\");\r\n break;\r\n case MediaPeerCommands.SegmentRequest:\r\n this.emit(\"segment-request\", this, command.i);\r\n break;\r\n case MediaPeerCommands.SegmentData:\r\n if (this.downloadingSegmentId &&\r\n this.downloadingSegmentId === command.i &&\r\n typeof command.s === \"number\" &&\r\n command.s >= 0) {\r\n this.downloadingSegment = new DownloadingSegment(command.i, command.s);\r\n this.emit(\"segment-start-load\", this.downloadingSegment.id);\r\n this.emit(\"segment-size\", this.downloadingSegment.id, this.downloadingSegment.size);\r\n this.cancelResponseTimeoutTimer();\r\n }\r\n break;\r\n case MediaPeerCommands.SegmentAbsent:\r\n if (this.downloadingSegmentId && this.downloadingSegmentId === command.i) {\r\n this.terminateSegmentRequest();\r\n this.segmentsMap.delete(command.i);\r\n this.emit(\"segment-absent\", this, command.i);\r\n }\r\n break;\r\n case MediaPeerCommands.CancelSegmentRequest:\r\n // TODO: peer stop sending buffer\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n this.createSegmentsMap = (segments) => {\r\n if (!(segments instanceof Object)) {\r\n return new Map();\r\n }\r\n const segmentsMap = new Map();\r\n for (const streamSwarmId of Object.keys(segments)) {\r\n const swarmData = segments[streamSwarmId];\r\n if (!(swarmData instanceof Array) ||\r\n swarmData.length !== 2 ||\r\n typeof swarmData[0] !== \"string\" ||\r\n !(swarmData[1] instanceof Array)) {\r\n return new Map();\r\n }\r\n const segmentsIds = swarmData[0].split(\"|\");\r\n const segmentsStatuses = swarmData[1];\r\n if (segmentsIds.length !== segmentsStatuses.length) {\r\n return new Map();\r\n }\r\n for (let i = 0; i < segmentsIds.length; i++) {\r\n const segmentStatus = segmentsStatuses[i];\r\n if (typeof segmentStatus !== \"number\" || MediaPeerSegmentStatus[segmentStatus] === undefined) {\r\n return new Map();\r\n }\r\n segmentsMap.set(`${streamSwarmId}+${segmentsIds[i]}`, segmentStatus);\r\n }\r\n }\r\n return segmentsMap;\r\n };\r\n this.sendCommand = (command) => {\r\n this.debug(\"peer send command\", this.id, command, this);\r\n this.peer.write(JSON.stringify(command));\r\n };\r\n this.destroy = () => {\r\n this.debug(\"peer destroy\", this.id, this);\r\n this.terminateSegmentRequest();\r\n this.peer.destroy();\r\n this.blockedRequests = null;\r\n };\r\n this.getDownloadingSegmentId = () => {\r\n return this.downloadingSegmentId;\r\n };\r\n this.getSegmentsMap = () => {\r\n return this.segmentsMap;\r\n };\r\n this.sendSegmentsMap = (segmentsMap) => {\r\n this.sendCommand({ c: MediaPeerCommands.SegmentsMap, m: segmentsMap });\r\n };\r\n this.sendSegmentData = (segmentId, data) => {\r\n this.sendCommand({\r\n c: MediaPeerCommands.SegmentData,\r\n i: segmentId,\r\n s: data.byteLength,\r\n });\r\n let bytesLeft = data.byteLength;\r\n while (bytesLeft > 0) {\r\n const bytesToSend = bytesLeft >= this.settings.webRtcMaxMessageSize ? this.settings.webRtcMaxMessageSize : bytesLeft;\r\n const buffer = buffer_1.Buffer.from(data, data.byteLength - bytesLeft, bytesToSend);\r\n this.peer.write(buffer);\r\n bytesLeft -= bytesToSend;\r\n }\r\n this.emit(\"bytes-uploaded\", this, segmentId, data.byteLength);\r\n };\r\n this.sendSegmentAbsent = (segmentId) => {\r\n this.sendCommand({ c: MediaPeerCommands.SegmentAbsent, i: segmentId });\r\n };\r\n this.requestSegment = (segmentId) => {\r\n if (this.downloadingSegmentId) {\r\n throw new Error(\"A segment is already downloading: \" + this.downloadingSegmentId);\r\n }\r\n this.sendCommand({ c: MediaPeerCommands.SegmentRequest, i: segmentId });\r\n this.downloadingSegmentId = segmentId;\r\n this.runResponseTimeoutTimer();\r\n };\r\n this.cancelSegmentRequest = () => {\r\n let downloadingSegment;\r\n if (this.downloadingSegmentId) {\r\n const segmentId = this.downloadingSegmentId;\r\n downloadingSegment = this.downloadingSegment ? this.downloadingSegment.pieces : undefined;\r\n this.terminateSegmentRequest();\r\n this.sendCommand({ c: MediaPeerCommands.CancelSegmentRequest, i: segmentId });\r\n }\r\n return downloadingSegment;\r\n };\r\n this.runResponseTimeoutTimer = () => {\r\n this.timer = setTimeout(() => {\r\n this.timer = null;\r\n if (!this.downloadingSegmentId) {\r\n return;\r\n }\r\n const segmentId = this.downloadingSegmentId;\r\n this.cancelSegmentRequest();\r\n this.emit(\"segment-timeout\", this, segmentId); // TODO: send peer not responding event\r\n }, this.settings.p2pSegmentDownloadTimeout);\r\n };\r\n this.cancelResponseTimeoutTimer = () => {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n };\r\n this.terminateSegmentRequest = () => {\r\n this.downloadingSegmentId = null;\r\n this.downloadingSegment = null;\r\n this.cancelResponseTimeoutTimer();\r\n };\r\n this.peer.on(\"connect\", this.onPeerConnect);\r\n this.peer.on(\"close\", this.onPeerClose);\r\n this.peer.on(\"error\", this.onPeerError);\r\n this.peer.on(\"data\", this.onPeerData);\r\n this.id = peer.id;\r\n this.blockedRequests = new Map();\r\n }\r\n}\r\nexports.MediaPeer = MediaPeer;\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.P2PMediaManager = void 0;\r\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n/* eslint-disable @typescript-eslint/no-unsafe-call */\r\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\r\nconst debug_1 = __importDefault(require(\"debug\"));\r\nconst client_1 = __importDefault(require(\"bittorrent-tracker/client\"));\r\nconst buffer_1 = require(\"buffer\");\r\nconst sha1_1 = __importDefault(require(\"sha.js/sha1\"));\r\nconst stringly_typed_event_emitter_1 = require(\"./stringly-typed-event-emitter\");\r\nconst media_peer_1 = require(\"./media-peer\");\r\nconst index_1 = require(\"./index\");\r\nconst PEER_PROTOCOL_VERSION = 2;\r\nconst PEER_ID_VERSION_STRING = index_1.version.replace(/\\d*./g, (v) => `0${parseInt(v, 10) % 100}`.slice(-2)).slice(0, 4);\r\nconst PEER_ID_VERSION_PREFIX = `-WW${PEER_ID_VERSION_STRING}-`; // Using WebTorrent client ID in order to not be banned by websocket trackers\r\nclass PeerSegmentRequest {\r\n constructor(peerId, segment) {\r\n this.peerId = peerId;\r\n this.segment = segment;\r\n }\r\n}\r\nfunction generatePeerId() {\r\n const PEER_ID_SYMBOLS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n const PEER_ID_LENGTH = 20;\r\n let peerId = PEER_ID_VERSION_PREFIX;\r\n for (let i = 0; i < PEER_ID_LENGTH - PEER_ID_VERSION_PREFIX.length; i++) {\r\n peerId += PEER_ID_SYMBOLS.charAt(Math.floor(Math.random() * PEER_ID_SYMBOLS.length));\r\n }\r\n return new TextEncoder().encode(peerId).buffer;\r\n}\r\nclass P2PMediaManager extends stringly_typed_event_emitter_1.STEEmitter {\r\n constructor(segmentsStorage, settings) {\r\n super();\r\n this.segmentsStorage = segmentsStorage;\r\n this.settings = settings;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.trackerClient = null;\r\n this.peers = new Map();\r\n this.peerCandidates = new Map();\r\n this.peerSegmentRequests = new Map();\r\n this.streamSwarmId = null;\r\n this.debug = (0, debug_1.default)(\"p2pml:p2p-media-manager\");\r\n this.pendingTrackerClient = null;\r\n this.getPeers = () => {\r\n return this.peers;\r\n };\r\n this.getPeerId = () => {\r\n return buffer_1.Buffer.from(this.peerId).toString(\"hex\");\r\n };\r\n this.setStreamSwarmId = (streamSwarmId, masterSwarmId) => {\r\n if (this.streamSwarmId === streamSwarmId) {\r\n return;\r\n }\r\n this.destroy(true);\r\n this.streamSwarmId = streamSwarmId;\r\n this.masterSwarmId = masterSwarmId;\r\n this.debug(\"stream swarm ID\", this.streamSwarmId);\r\n this.pendingTrackerClient = {\r\n isDestroyed: false,\r\n };\r\n const pendingTrackerClient = this.pendingTrackerClient;\r\n // TODO: native browser 'crypto.subtle' implementation doesn't work in Chrome in insecure pages\r\n // TODO: Edge doesn't support SHA-1. Change to SHA-256 once Edge support is required.\r\n // const infoHash = await crypto.subtle.digest(\"SHA-1\", new TextEncoder().encode(PEER_PROTOCOL_VERSION + this.streamSwarmId));\r\n const infoHash = new sha1_1.default().update(`${PEER_PROTOCOL_VERSION}${this.streamSwarmId}`).digest();\r\n // destroy may be called while waiting for the hash to be calculated\r\n if (!pendingTrackerClient.isDestroyed) {\r\n this.pendingTrackerClient = null;\r\n this.createClient(infoHash);\r\n }\r\n else if (this.trackerClient !== null) {\r\n this.trackerClient.destroy();\r\n this.trackerClient = null;\r\n }\r\n };\r\n this.createClient = (infoHash) => {\r\n if (!this.settings.useP2P) {\r\n return;\r\n }\r\n const clientOptions = {\r\n infoHash: buffer_1.Buffer.from(infoHash, 0, 20),\r\n peerId: buffer_1.Buffer.from(this.peerId, 0, 20),\r\n announce: this.settings.trackerAnnounce,\r\n rtcConfig: this.settings.rtcConfig,\r\n port: 6881,\r\n getAnnounceOpts: () => {\r\n return { numwant: this.settings.peerRequestsPerAnnounce };\r\n },\r\n };\r\n let oldTrackerClient = this.trackerClient;\r\n this.trackerClient = new client_1.default(clientOptions);\r\n this.trackerClient.on(\"error\", this.onTrackerError);\r\n this.trackerClient.on(\"warning\", this.onTrackerWarning);\r\n this.trackerClient.on(\"update\", this.onTrackerUpdate);\r\n this.trackerClient.on(\"peer\", this.onTrackerPeer);\r\n this.trackerClient.start();\r\n if (oldTrackerClient !== null) {\r\n oldTrackerClient.destroy();\r\n oldTrackerClient = null;\r\n }\r\n };\r\n this.onTrackerError = (error) => {\r\n this.debug(\"tracker error\", error);\r\n };\r\n this.onTrackerWarning = (warning) => {\r\n this.debug(\"tracker warning\", warning);\r\n };\r\n this.onTrackerUpdate = (data) => {\r\n this.debug(\"tracker update\", data);\r\n this.emit(\"tracker-update\", data);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.onTrackerPeer = (trackerPeer) => {\r\n this.debug(\"tracker peer\", trackerPeer.id, trackerPeer);\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n if (this.peers.has(trackerPeer.id)) {\r\n this.debug(\"tracker peer already connected\", trackerPeer.id, trackerPeer);\r\n trackerPeer.destroy();\r\n return;\r\n }\r\n const peer = new media_peer_1.MediaPeer(trackerPeer, this.settings);\r\n peer.on(\"connect\", this.onPeerConnect);\r\n peer.on(\"close\", this.onPeerClose);\r\n peer.on(\"data-updated\", this.onPeerDataUpdated);\r\n peer.on(\"segment-request\", this.onSegmentRequest);\r\n peer.on(\"segment-loaded\", this.onSegmentLoaded);\r\n peer.on(\"segment-absent\", this.onSegmentAbsent);\r\n peer.on(\"segment-error\", this.onSegmentError);\r\n peer.on(\"segment-size\", this.onSegmentSize);\r\n peer.on(\"segment-start-load\", this.onSegmentStartLoad);\r\n peer.on(\"segment-timeout\", this.onSegmentTimeout);\r\n peer.on(\"bytes-downloaded\", this.onPieceBytesDownloaded);\r\n peer.on(\"bytes-uploaded\", this.onPieceBytesUploaded);\r\n let peerCandidatesById = this.peerCandidates.get(peer.id);\r\n if (!peerCandidatesById) {\r\n peerCandidatesById = [];\r\n this.peerCandidates.set(peer.id, peerCandidatesById);\r\n }\r\n peerCandidatesById.push(peer);\r\n };\r\n this.download = (segment) => {\r\n if (this.isDownloading(segment)) {\r\n return false;\r\n }\r\n const candidates = [];\r\n for (const peer of this.peers.values()) {\r\n if (peer.getDownloadingSegmentId() === null &&\r\n peer.getSegmentsMap().get(segment.id) === media_peer_1.MediaPeerSegmentStatus.Loaded) {\r\n candidates.push(peer);\r\n }\r\n }\r\n if (candidates.length === 0) {\r\n return false;\r\n }\r\n const peer = candidates[Math.floor(Math.random() * candidates.length)];\r\n peer.requestSegment(segment.id);\r\n this.peerSegmentRequests.set(segment.id, new PeerSegmentRequest(peer.id, segment));\r\n return true;\r\n };\r\n this.abort = (segment) => {\r\n let downloadingSegment;\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segment.id);\r\n if (peerSegmentRequest) {\r\n const peer = this.peers.get(peerSegmentRequest.peerId);\r\n if (peer) {\r\n downloadingSegment = peer.cancelSegmentRequest();\r\n }\r\n this.peerSegmentRequests.delete(segment.id);\r\n }\r\n return downloadingSegment;\r\n };\r\n this.isDownloading = (segment) => {\r\n return this.peerSegmentRequests.has(segment.id);\r\n };\r\n this.getActiveDownloadsCount = () => {\r\n return this.peerSegmentRequests.size;\r\n };\r\n this.destroy = (swarmChange = false) => {\r\n this.streamSwarmId = null;\r\n if (this.trackerClient) {\r\n this.trackerClient.stop();\r\n if (swarmChange) {\r\n // Don't destroy trackerClient to reuse its WebSocket connection to the tracker server\r\n this.trackerClient.removeAllListeners(\"error\");\r\n this.trackerClient.removeAllListeners(\"warning\");\r\n this.trackerClient.removeAllListeners(\"update\");\r\n this.trackerClient.removeAllListeners(\"peer\");\r\n }\r\n else {\r\n this.trackerClient.destroy();\r\n this.trackerClient = null;\r\n }\r\n }\r\n if (this.pendingTrackerClient) {\r\n this.pendingTrackerClient.isDestroyed = true;\r\n this.pendingTrackerClient = null;\r\n }\r\n this.peers.forEach((peer) => peer.destroy());\r\n this.peers.clear();\r\n this.peerSegmentRequests.clear();\r\n for (const peerCandidateById of this.peerCandidates.values()) {\r\n for (const peerCandidate of peerCandidateById) {\r\n peerCandidate.destroy();\r\n }\r\n }\r\n this.peerCandidates.clear();\r\n };\r\n this.sendSegmentsMapToAll = (segmentsMap) => {\r\n this.peers.forEach((peer) => peer.sendSegmentsMap(segmentsMap));\r\n };\r\n this.sendSegmentsMap = (peerId, segmentsMap) => {\r\n const peer = this.peers.get(peerId);\r\n if (peer) {\r\n peer.sendSegmentsMap(segmentsMap);\r\n }\r\n };\r\n this.getOverallSegmentsMap = () => {\r\n const overallSegmentsMap = new Map();\r\n for (const peer of this.peers.values()) {\r\n for (const [segmentId, segmentStatus] of peer.getSegmentsMap()) {\r\n if (segmentStatus === media_peer_1.MediaPeerSegmentStatus.Loaded) {\r\n overallSegmentsMap.set(segmentId, media_peer_1.MediaPeerSegmentStatus.Loaded);\r\n }\r\n else if (!overallSegmentsMap.get(segmentId)) {\r\n overallSegmentsMap.set(segmentId, media_peer_1.MediaPeerSegmentStatus.LoadingByHttp);\r\n }\r\n }\r\n }\r\n return overallSegmentsMap;\r\n };\r\n this.onPieceBytesDownloaded = (peer, segmentId, bytes) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (peerSegmentRequest) {\r\n this.emit(\"bytes-downloaded\", peerSegmentRequest.segment, bytes, peer.id);\r\n }\r\n };\r\n this.onPieceBytesUploaded = async (peer, segmentId, bytes) => {\r\n if (this.masterSwarmId === undefined) {\r\n return;\r\n }\r\n const segment = await this.segmentsStorage.getSegment(segmentId, this.masterSwarmId);\r\n if (segment) {\r\n this.emit(\"bytes-uploaded\", segment, bytes, peer.id);\r\n }\r\n };\r\n this.onPeerConnect = (peer) => {\r\n const connectedPeer = this.peers.get(peer.id);\r\n if (connectedPeer) {\r\n this.debug(\"tracker peer already connected (in peer connect)\", peer.id, peer);\r\n peer.destroy();\r\n return;\r\n }\r\n // First peer with the ID connected\r\n this.peers.set(peer.id, peer);\r\n // Destroy all other peer candidates\r\n const peerCandidatesById = this.peerCandidates.get(peer.id);\r\n if (peerCandidatesById) {\r\n for (const peerCandidate of peerCandidatesById) {\r\n if (peerCandidate !== peer) {\r\n peerCandidate.destroy();\r\n }\r\n }\r\n this.peerCandidates.delete(peer.id);\r\n }\r\n this.emit(\"peer-connected\", { id: peer.id, remoteAddress: peer.remoteAddress });\r\n };\r\n this.onPeerClose = (peer) => {\r\n if (this.peers.get(peer.id) !== peer) {\r\n // Try to delete the peer candidate\r\n const peerCandidatesById = this.peerCandidates.get(peer.id);\r\n if (!peerCandidatesById) {\r\n return;\r\n }\r\n const index = peerCandidatesById.indexOf(peer);\r\n if (index !== -1) {\r\n peerCandidatesById.splice(index, 1);\r\n }\r\n if (peerCandidatesById.length === 0) {\r\n this.peerCandidates.delete(peer.id);\r\n }\r\n return;\r\n }\r\n for (const [key, value] of this.peerSegmentRequests) {\r\n if (value.peerId === peer.id) {\r\n this.peerSegmentRequests.delete(key);\r\n }\r\n }\r\n this.peers.delete(peer.id);\r\n this.emit(\"peer-data-updated\");\r\n this.emit(\"peer-closed\", peer.id);\r\n };\r\n this.onPeerDataUpdated = () => {\r\n this.emit(\"peer-data-updated\");\r\n };\r\n this.onSegmentRequest = async (peer, segmentId) => {\r\n if (this.masterSwarmId === undefined) {\r\n return;\r\n }\r\n const segment = await this.segmentsStorage.getSegment(segmentId, this.masterSwarmId);\r\n if (segment && segment.data) {\r\n peer.sendSegmentData(segmentId, segment.data);\r\n }\r\n else {\r\n peer.sendSegmentAbsent(segmentId);\r\n }\r\n };\r\n this.onSegmentLoaded = async (peer, segmentId, data) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (!peerSegmentRequest) {\r\n return;\r\n }\r\n const segment = peerSegmentRequest.segment;\r\n if (this.settings.segmentValidator) {\r\n try {\r\n await this.settings.segmentValidator(Object.assign(Object.assign({}, segment), { data: data }), \"p2p\", peer.id);\r\n }\r\n catch (error) {\r\n this.debug(\"segment validator failed\", error);\r\n this.peerSegmentRequests.delete(segmentId);\r\n this.emit(\"segment-error\", segment, error, peer.id);\r\n this.onPeerClose(peer);\r\n return;\r\n }\r\n }\r\n this.peerSegmentRequests.delete(segmentId);\r\n this.emit(\"segment-loaded\", segment, data, peer.id);\r\n };\r\n this.onSegmentAbsent = (peer, segmentId) => {\r\n this.peerSegmentRequests.delete(segmentId);\r\n this.emit(\"peer-data-updated\");\r\n };\r\n this.onSegmentError = (peer, segmentId, description) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (peerSegmentRequest) {\r\n this.peerSegmentRequests.delete(segmentId);\r\n this.emit(\"segment-error\", peerSegmentRequest.segment, description, peer.id);\r\n }\r\n };\r\n this.onSegmentSize = (segmentId, size) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (peerSegmentRequest) {\r\n this.emit(\"segment-size\", peerSegmentRequest.segment, size);\r\n }\r\n };\r\n this.onSegmentStartLoad = (segmentId, size) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (peerSegmentRequest) {\r\n this.emit(\"segment-start-load\", peerSegmentRequest.segment, size);\r\n }\r\n };\r\n this.onSegmentTimeout = (peer, segmentId) => {\r\n const peerSegmentRequest = this.peerSegmentRequests.get(segmentId);\r\n if (peerSegmentRequest) {\r\n this.peerSegmentRequests.delete(segmentId);\r\n peer.destroy();\r\n if (this.peers.delete(peerSegmentRequest.peerId)) {\r\n this.emit(\"peer-data-updated\");\r\n }\r\n }\r\n };\r\n this.peerId = settings.useP2P ? generatePeerId() : new ArrayBuffer(0);\r\n if (this.debug.enabled) {\r\n this.debug(\"peer ID\", this.getPeerId(), new TextDecoder().decode(this.peerId));\r\n }\r\n }\r\n}\r\nexports.P2PMediaManager = P2PMediaManager;\r\n","\"use strict\";\r\n/**\r\n * Copyright 2019 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SegmentsMemoryStorage = void 0;\r\nclass SegmentsMemoryStorage {\r\n constructor(settings) {\r\n this.settings = settings;\r\n this.cache = new Map();\r\n this.storeSegment = async (segment) => {\r\n this.cache.set(segment.id, { segment, lastAccessed: performance.now() });\r\n };\r\n this.getSegmentsMap = async () => {\r\n return this.cache;\r\n };\r\n this.getSegment = async (id) => {\r\n const cacheItem = this.cache.get(id);\r\n if (cacheItem === undefined) {\r\n return undefined;\r\n }\r\n cacheItem.lastAccessed = performance.now();\r\n return cacheItem.segment;\r\n };\r\n this.hasSegment = async (id) => {\r\n return this.cache.has(id);\r\n };\r\n this.clean = async (masterSwarmId, lockedSegmentsFilter) => {\r\n const segmentsToDelete = [];\r\n const remainingSegments = [];\r\n // Delete old segments\r\n const now = performance.now();\r\n for (const cachedSegment of this.cache.values()) {\r\n if (now - cachedSegment.lastAccessed > this.settings.cachedSegmentExpiration) {\r\n segmentsToDelete.push(cachedSegment.segment.id);\r\n }\r\n else {\r\n remainingSegments.push(cachedSegment);\r\n }\r\n }\r\n // Delete segments over cached count\r\n let countOverhead = remainingSegments.length - this.settings.cachedSegmentsCount;\r\n if (countOverhead > 0) {\r\n remainingSegments.sort((a, b) => a.lastAccessed - b.lastAccessed);\r\n for (const cachedSegment of remainingSegments) {\r\n if (lockedSegmentsFilter === undefined || !lockedSegmentsFilter(cachedSegment.segment.id)) {\r\n segmentsToDelete.push(cachedSegment.segment.id);\r\n countOverhead--;\r\n if (countOverhead === 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n segmentsToDelete.forEach((id) => this.cache.delete(id));\r\n return segmentsToDelete.length > 0;\r\n };\r\n this.destroy = async () => {\r\n this.cache.clear();\r\n };\r\n }\r\n}\r\nexports.SegmentsMemoryStorage = SegmentsMemoryStorage;\r\n","\"use strict\";\r\n/**\r\n * Copyright 2018 Novage LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.STEEmitter = void 0;\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nconst events_1 = require(\"events\");\r\nclass STEEmitter extends events_1.EventEmitter {\r\n constructor() {\r\n super(...arguments);\r\n this.on = (event, listener) => super.on(event, listener);\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.emit = (event, ...args) => super.emit(event, ...args);\r\n }\r\n}\r\nexports.STEEmitter = STEEmitter;\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/*! simple-peer. MIT License. Feross Aboukhadijeh */\nconst debug = require('debug')('simple-peer')\nconst getBrowserRTC = require('get-browser-rtc')\nconst randombytes = require('randombytes')\nconst stream = require('readable-stream')\nconst queueMicrotask = require('queue-microtask') // TODO: remove when Node 10 is not supported\nconst errCode = require('err-code')\nconst { Buffer } = require('buffer')\n\nconst MAX_BUFFERED_AMOUNT = 64 * 1024\nconst ICECOMPLETE_TIMEOUT = 5 * 1000\nconst CHANNEL_CLOSING_TIMEOUT = 5 * 1000\n\n// HACK: Filter trickle lines when trickle is disabled #354\nfunction filterTrickle (sdp) {\n return sdp.replace(/a=ice-options:trickle\\s\\n/g, '')\n}\n\nfunction warn (message) {\n console.warn(message)\n}\n\n/**\n * WebRTC peer connection. Same API as node core `net.Socket`, plus a few extra methods.\n * Duplex stream.\n * @param {Object} opts\n */\nclass Peer extends stream.Duplex {\n constructor (opts) {\n opts = Object.assign({\n allowHalfOpen: false\n }, opts)\n\n super(opts)\n\n this._id = randombytes(4).toString('hex').slice(0, 7)\n this._debug('new peer %o', opts)\n\n this.channelName = opts.initiator\n ? opts.channelName || randombytes(20).toString('hex')\n : null\n\n this.initiator = opts.initiator || false\n this.channelConfig = opts.channelConfig || Peer.channelConfig\n this.channelNegotiated = this.channelConfig.negotiated\n this.config = Object.assign({}, Peer.config, opts.config)\n this.offerOptions = opts.offerOptions || {}\n this.answerOptions = opts.answerOptions || {}\n this.sdpTransform = opts.sdpTransform || (sdp => sdp)\n this.streams = opts.streams || (opts.stream ? [opts.stream] : []) // support old \"stream\" option\n this.trickle = opts.trickle !== undefined ? opts.trickle : true\n this.allowHalfTrickle = opts.allowHalfTrickle !== undefined ? opts.allowHalfTrickle : false\n this.iceCompleteTimeout = opts.iceCompleteTimeout || ICECOMPLETE_TIMEOUT\n\n this.destroyed = false\n this.destroying = false\n this._connected = false\n\n this.remoteAddress = undefined\n this.remoteFamily = undefined\n this.remotePort = undefined\n this.localAddress = undefined\n this.localFamily = undefined\n this.localPort = undefined\n\n this._wrtc = (opts.wrtc && typeof opts.wrtc === 'object')\n ? opts.wrtc\n : getBrowserRTC()\n\n if (!this._wrtc) {\n if (typeof window === 'undefined') {\n throw errCode(new Error('No WebRTC support: Specify `opts.wrtc` option in this environment'), 'ERR_WEBRTC_SUPPORT')\n } else {\n throw errCode(new Error('No WebRTC support: Not a supported browser'), 'ERR_WEBRTC_SUPPORT')\n }\n }\n\n this._pcReady = false\n this._channelReady = false\n this._iceComplete = false // ice candidate trickle done (got null candidate)\n this._iceCompleteTimer = null // send an offer/answer anyway after some timeout\n this._channel = null\n this._pendingCandidates = []\n\n this._isNegotiating = false // is this peer waiting for negotiation to complete?\n this._firstNegotiation = true\n this._batchedNegotiation = false // batch synchronous negotiations\n this._queuedNegotiation = false // is there a queued negotiation request?\n this._sendersAwaitingStable = []\n this._senderMap = new Map()\n this._closingInterval = null\n\n this._remoteTracks = []\n this._remoteStreams = []\n\n this._chunk = null\n this._cb = null\n this._interval = null\n\n try {\n this._pc = new (this._wrtc.RTCPeerConnection)(this.config)\n } catch (err) {\n this.destroy(errCode(err, 'ERR_PC_CONSTRUCTOR'))\n return\n }\n\n // We prefer feature detection whenever possible, but sometimes that's not\n // possible for certain implementations.\n this._isReactNativeWebrtc = typeof this._pc._peerConnectionId === 'number'\n\n this._pc.oniceconnectionstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onicegatheringstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onconnectionstatechange = () => {\n this._onConnectionStateChange()\n }\n this._pc.onsignalingstatechange = () => {\n this._onSignalingStateChange()\n }\n this._pc.onicecandidate = event => {\n this._onIceCandidate(event)\n }\n\n // HACK: Fix for odd Firefox behavior, see: https://github.com/feross/simple-peer/pull/783\n if (typeof this._pc.peerIdentity === 'object') {\n this._pc.peerIdentity.catch(err => {\n this.destroy(errCode(err, 'ERR_PC_PEER_IDENTITY'))\n })\n }\n\n // Other spec events, unused by this implementation:\n // - onconnectionstatechange\n // - onicecandidateerror\n // - onfingerprintfailure\n // - onnegotiationneeded\n\n if (this.initiator || this.channelNegotiated) {\n this._setupData({\n channel: this._pc.createDataChannel(this.channelName, this.channelConfig)\n })\n } else {\n this._pc.ondatachannel = event => {\n this._setupData(event)\n }\n }\n\n if (this.streams) {\n this.streams.forEach(stream => {\n this.addStream(stream)\n })\n }\n this._pc.ontrack = event => {\n this._onTrack(event)\n }\n\n this._debug('initial negotiation')\n this._needsNegotiation()\n\n this._onFinishBound = () => {\n this._onFinish()\n }\n this.once('finish', this._onFinishBound)\n }\n\n get bufferSize () {\n return (this._channel && this._channel.bufferedAmount) || 0\n }\n\n // HACK: it's possible channel.readyState is \"closing\" before peer.destroy() fires\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n get connected () {\n return (this._connected && this._channel.readyState === 'open')\n }\n\n address () {\n return { port: this.localPort, family: this.localFamily, address: this.localAddress }\n }\n\n signal (data) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot signal after peer is destroyed'), 'ERR_DESTROYED')\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data)\n } catch (err) {\n data = {}\n }\n }\n this._debug('signal()')\n\n if (data.renegotiate && this.initiator) {\n this._debug('got request to renegotiate')\n this._needsNegotiation()\n }\n if (data.transceiverRequest && this.initiator) {\n this._debug('got request for transceiver')\n this.addTransceiver(data.transceiverRequest.kind, data.transceiverRequest.init)\n }\n if (data.candidate) {\n if (this._pc.remoteDescription && this._pc.remoteDescription.type) {\n this._addIceCandidate(data.candidate)\n } else {\n this._pendingCandidates.push(data.candidate)\n }\n }\n if (data.sdp) {\n this._pc.setRemoteDescription(new (this._wrtc.RTCSessionDescription)(data))\n .then(() => {\n if (this.destroyed) return\n\n this._pendingCandidates.forEach(candidate => {\n this._addIceCandidate(candidate)\n })\n this._pendingCandidates = []\n\n if (this._pc.remoteDescription.type === 'offer') this._createAnswer()\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_SET_REMOTE_DESCRIPTION'))\n })\n }\n if (!data.sdp && !data.candidate && !data.renegotiate && !data.transceiverRequest) {\n this.destroy(errCode(new Error('signal() called with invalid signal data'), 'ERR_SIGNALING'))\n }\n }\n\n _addIceCandidate (candidate) {\n const iceCandidateObj = new this._wrtc.RTCIceCandidate(candidate)\n this._pc.addIceCandidate(iceCandidateObj)\n .catch(err => {\n if (!iceCandidateObj.address || iceCandidateObj.address.endsWith('.local')) {\n warn('Ignoring unsupported ICE candidate.')\n } else {\n this.destroy(errCode(err, 'ERR_ADD_ICE_CANDIDATE'))\n }\n })\n }\n\n /**\n * Send text/binary data to the remote peer.\n * @param {ArrayBufferView|ArrayBuffer|Buffer|string|Blob} chunk\n */\n send (chunk) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot send after peer is destroyed'), 'ERR_DESTROYED')\n this._channel.send(chunk)\n }\n\n /**\n * Add a Transceiver to the connection.\n * @param {String} kind\n * @param {Object} init\n */\n addTransceiver (kind, init) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addTransceiver after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addTransceiver()')\n\n if (this.initiator) {\n try {\n this._pc.addTransceiver(kind, init)\n this._needsNegotiation()\n } catch (err) {\n this.destroy(errCode(err, 'ERR_ADD_TRANSCEIVER'))\n }\n } else {\n this.emit('signal', { // request initiator to renegotiate\n type: 'transceiverRequest',\n transceiverRequest: { kind, init }\n })\n }\n }\n\n /**\n * Add a MediaStream to the connection.\n * @param {MediaStream} stream\n */\n addStream (stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addStream after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addStream()')\n\n stream.getTracks().forEach(track => {\n this.addTrack(track, stream)\n })\n }\n\n /**\n * Add a MediaStreamTrack to the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n addTrack (track, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot addTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('addTrack()')\n\n const submap = this._senderMap.get(track) || new Map() // nested Maps map [track, stream] to sender\n let sender = submap.get(stream)\n if (!sender) {\n sender = this._pc.addTrack(track, stream)\n submap.set(stream, sender)\n this._senderMap.set(track, submap)\n this._needsNegotiation()\n } else if (sender.removed) {\n throw errCode(new Error('Track has been removed. You should enable/disable tracks that you want to re-add.'), 'ERR_SENDER_REMOVED')\n } else {\n throw errCode(new Error('Track has already been added to that stream.'), 'ERR_SENDER_ALREADY_ADDED')\n }\n }\n\n /**\n * Replace a MediaStreamTrack by another in the connection.\n * @param {MediaStreamTrack} oldTrack\n * @param {MediaStreamTrack} newTrack\n * @param {MediaStream} stream\n */\n replaceTrack (oldTrack, newTrack, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot replaceTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('replaceTrack()')\n\n const submap = this._senderMap.get(oldTrack)\n const sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw errCode(new Error('Cannot replace track that was never added.'), 'ERR_TRACK_NOT_ADDED')\n }\n if (newTrack) this._senderMap.set(newTrack, submap)\n\n if (sender.replaceTrack != null) {\n sender.replaceTrack(newTrack)\n } else {\n this.destroy(errCode(new Error('replaceTrack is not supported in this browser'), 'ERR_UNSUPPORTED_REPLACETRACK'))\n }\n }\n\n /**\n * Remove a MediaStreamTrack from the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n removeTrack (track, stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot removeTrack after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('removeSender()')\n\n const submap = this._senderMap.get(track)\n const sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw errCode(new Error('Cannot remove track that was never added.'), 'ERR_TRACK_NOT_ADDED')\n }\n try {\n sender.removed = true\n this._pc.removeTrack(sender)\n } catch (err) {\n if (err.name === 'NS_ERROR_UNEXPECTED') {\n this._sendersAwaitingStable.push(sender) // HACK: Firefox must wait until (signalingState === stable) https://bugzilla.mozilla.org/show_bug.cgi?id=1133874\n } else {\n this.destroy(errCode(err, 'ERR_REMOVE_TRACK'))\n }\n }\n this._needsNegotiation()\n }\n\n /**\n * Remove a MediaStream from the connection.\n * @param {MediaStream} stream\n */\n removeStream (stream) {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot removeStream after peer is destroyed'), 'ERR_DESTROYED')\n this._debug('removeSenders()')\n\n stream.getTracks().forEach(track => {\n this.removeTrack(track, stream)\n })\n }\n\n _needsNegotiation () {\n this._debug('_needsNegotiation')\n if (this._batchedNegotiation) return // batch synchronous renegotiations\n this._batchedNegotiation = true\n queueMicrotask(() => {\n this._batchedNegotiation = false\n if (this.initiator || !this._firstNegotiation) {\n this._debug('starting batched negotiation')\n this.negotiate()\n } else {\n this._debug('non-initiator initial negotiation request discarded')\n }\n this._firstNegotiation = false\n })\n }\n\n negotiate () {\n if (this.destroying) return\n if (this.destroyed) throw errCode(new Error('cannot negotiate after peer is destroyed'), 'ERR_DESTROYED')\n\n if (this.initiator) {\n if (this._isNegotiating) {\n this._queuedNegotiation = true\n this._debug('already negotiating, queueing')\n } else {\n this._debug('start negotiation')\n setTimeout(() => { // HACK: Chrome crashes if we immediately call createOffer\n this._createOffer()\n }, 0)\n }\n } else {\n if (this._isNegotiating) {\n this._queuedNegotiation = true\n this._debug('already negotiating, queueing')\n } else {\n this._debug('requesting negotiation from initiator')\n this.emit('signal', { // request initiator to renegotiate\n type: 'renegotiate',\n renegotiate: true\n })\n }\n }\n this._isNegotiating = true\n }\n\n // TODO: Delete this method once readable-stream is updated to contain a default\n // implementation of destroy() that automatically calls _destroy()\n // See: https://github.com/nodejs/readable-stream/issues/283\n destroy (err) {\n this._destroy(err, () => {})\n }\n\n _destroy (err, cb) {\n if (this.destroyed || this.destroying) return\n this.destroying = true\n\n this._debug('destroying (error: %s)', err && (err.message || err))\n\n queueMicrotask(() => { // allow events concurrent with the call to _destroy() to fire (see #692)\n this.destroyed = true\n this.destroying = false\n\n this._debug('destroy (error: %s)', err && (err.message || err))\n\n this.readable = this.writable = false\n\n if (!this._readableState.ended) this.push(null)\n if (!this._writableState.finished) this.end()\n\n this._connected = false\n this._pcReady = false\n this._channelReady = false\n this._remoteTracks = null\n this._remoteStreams = null\n this._senderMap = null\n\n clearInterval(this._closingInterval)\n this._closingInterval = null\n\n clearInterval(this._interval)\n this._interval = null\n this._chunk = null\n this._cb = null\n\n if (this._onFinishBound) this.removeListener('finish', this._onFinishBound)\n this._onFinishBound = null\n\n if (this._channel) {\n try {\n this._channel.close()\n } catch (err) {}\n\n // allow events concurrent with destruction to be handled\n this._channel.onmessage = null\n this._channel.onopen = null\n this._channel.onclose = null\n this._channel.onerror = null\n }\n if (this._pc) {\n try {\n this._pc.close()\n } catch (err) {}\n\n // allow events concurrent with destruction to be handled\n this._pc.oniceconnectionstatechange = null\n this._pc.onicegatheringstatechange = null\n this._pc.onsignalingstatechange = null\n this._pc.onicecandidate = null\n this._pc.ontrack = null\n this._pc.ondatachannel = null\n }\n this._pc = null\n this._channel = null\n\n if (err) this.emit('error', err)\n this.emit('close')\n cb()\n })\n }\n\n _setupData (event) {\n if (!event.channel) {\n // In some situations `pc.createDataChannel()` returns `undefined` (in wrtc),\n // which is invalid behavior. Handle it gracefully.\n // See: https://github.com/feross/simple-peer/issues/163\n return this.destroy(errCode(new Error('Data channel event is missing `channel` property'), 'ERR_DATA_CHANNEL'))\n }\n\n this._channel = event.channel\n this._channel.binaryType = 'arraybuffer'\n\n if (typeof this._channel.bufferedAmountLowThreshold === 'number') {\n this._channel.bufferedAmountLowThreshold = MAX_BUFFERED_AMOUNT\n }\n\n this.channelName = this._channel.label\n\n this._channel.onmessage = event => {\n this._onChannelMessage(event)\n }\n this._channel.onbufferedamountlow = () => {\n this._onChannelBufferedAmountLow()\n }\n this._channel.onopen = () => {\n this._onChannelOpen()\n }\n this._channel.onclose = () => {\n this._onChannelClose()\n }\n this._channel.onerror = event => {\n const err = event.error instanceof Error\n ? event.error\n : new Error(`Datachannel error: ${event.message} ${event.filename}:${event.lineno}:${event.colno}`)\n this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n\n // HACK: Chrome will sometimes get stuck in readyState \"closing\", let's check for this condition\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n let isClosing = false\n this._closingInterval = setInterval(() => { // No \"onclosing\" event\n if (this._channel && this._channel.readyState === 'closing') {\n if (isClosing) this._onChannelClose() // closing timed out: equivalent to onclose firing\n isClosing = true\n } else {\n isClosing = false\n }\n }, CHANNEL_CLOSING_TIMEOUT)\n }\n\n _read () {}\n\n _write (chunk, encoding, cb) {\n if (this.destroyed) return cb(errCode(new Error('cannot write after peer is destroyed'), 'ERR_DATA_CHANNEL'))\n\n if (this._connected) {\n try {\n this.send(chunk)\n } catch (err) {\n return this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n if (this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n this._debug('start backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n this._cb = cb\n } else {\n cb(null)\n }\n } else {\n this._debug('write before connect')\n this._chunk = chunk\n this._cb = cb\n }\n }\n\n // When stream finishes writing, close socket. Half open connections are not\n // supported.\n _onFinish () {\n if (this.destroyed) return\n\n // Wait a bit before destroying so the socket flushes.\n // TODO: is there a more reliable way to accomplish this?\n const destroySoon = () => {\n setTimeout(() => this.destroy(), 1000)\n }\n\n if (this._connected) {\n destroySoon()\n } else {\n this.once('connect', destroySoon)\n }\n }\n\n _startIceCompleteTimeout () {\n if (this.destroyed) return\n if (this._iceCompleteTimer) return\n this._debug('started iceComplete timeout')\n this._iceCompleteTimer = setTimeout(() => {\n if (!this._iceComplete) {\n this._iceComplete = true\n this._debug('iceComplete timeout completed')\n this.emit('iceTimeout')\n this.emit('_iceComplete')\n }\n }, this.iceCompleteTimeout)\n }\n\n _createOffer () {\n if (this.destroyed) return\n\n this._pc.createOffer(this.offerOptions)\n .then(offer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) offer.sdp = filterTrickle(offer.sdp)\n offer.sdp = this.sdpTransform(offer.sdp)\n\n const sendOffer = () => {\n if (this.destroyed) return\n const signal = this._pc.localDescription || offer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n }\n\n const onSuccess = () => {\n this._debug('createOffer success')\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendOffer()\n else this.once('_iceComplete', sendOffer) // wait for candidates\n }\n\n const onError = err => {\n this.destroy(errCode(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(offer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_CREATE_OFFER'))\n })\n }\n\n _requestMissingTransceivers () {\n if (this._pc.getTransceivers) {\n this._pc.getTransceivers().forEach(transceiver => {\n if (!transceiver.mid && transceiver.sender.track && !transceiver.requested) {\n transceiver.requested = true // HACK: Safari returns negotiated transceivers with a null mid\n this.addTransceiver(transceiver.sender.track.kind)\n }\n })\n }\n }\n\n _createAnswer () {\n if (this.destroyed) return\n\n this._pc.createAnswer(this.answerOptions)\n .then(answer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) answer.sdp = filterTrickle(answer.sdp)\n answer.sdp = this.sdpTransform(answer.sdp)\n\n const sendAnswer = () => {\n if (this.destroyed) return\n const signal = this._pc.localDescription || answer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n if (!this.initiator) this._requestMissingTransceivers()\n }\n\n const onSuccess = () => {\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendAnswer()\n else this.once('_iceComplete', sendAnswer)\n }\n\n const onError = err => {\n this.destroy(errCode(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(answer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(errCode(err, 'ERR_CREATE_ANSWER'))\n })\n }\n\n _onConnectionStateChange () {\n if (this.destroyed) return\n if (this._pc.connectionState === 'failed') {\n this.destroy(errCode(new Error('Connection failed.'), 'ERR_CONNECTION_FAILURE'))\n }\n }\n\n _onIceStateChange () {\n if (this.destroyed) return\n const iceConnectionState = this._pc.iceConnectionState\n const iceGatheringState = this._pc.iceGatheringState\n\n this._debug(\n 'iceStateChange (connection: %s) (gathering: %s)',\n iceConnectionState,\n iceGatheringState\n )\n this.emit('iceStateChange', iceConnectionState, iceGatheringState)\n\n if (iceConnectionState === 'connected' || iceConnectionState === 'completed') {\n this._pcReady = true\n this._maybeReady()\n }\n if (iceConnectionState === 'failed') {\n this.destroy(errCode(new Error('Ice connection failed.'), 'ERR_ICE_CONNECTION_FAILURE'))\n }\n if (iceConnectionState === 'closed') {\n this.destroy(errCode(new Error('Ice connection closed.'), 'ERR_ICE_CONNECTION_CLOSED'))\n }\n }\n\n getStats (cb) {\n // statreports can come with a value array instead of properties\n const flattenValues = report => {\n if (Object.prototype.toString.call(report.values) === '[object Array]') {\n report.values.forEach(value => {\n Object.assign(report, value)\n })\n }\n return report\n }\n\n // Promise-based getStats() (standard)\n if (this._pc.getStats.length === 0 || this._isReactNativeWebrtc) {\n this._pc.getStats()\n .then(res => {\n const reports = []\n res.forEach(report => {\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Single-parameter callback-based getStats() (non-standard)\n } else if (this._pc.getStats.length > 0) {\n this._pc.getStats(res => {\n // If we destroy connection in `connect` callback this code might happen to run when actual connection is already closed\n if (this.destroyed) return\n\n const reports = []\n res.result().forEach(result => {\n const report = {}\n result.names().forEach(name => {\n report[name] = result.stat(name)\n })\n report.id = result.id\n report.type = result.type\n report.timestamp = result.timestamp\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Unknown browser, skip getStats() since it's anyone's guess which style of\n // getStats() they implement.\n } else {\n cb(null, [])\n }\n }\n\n _maybeReady () {\n this._debug('maybeReady pc %s channel %s', this._pcReady, this._channelReady)\n if (this._connected || this._connecting || !this._pcReady || !this._channelReady) return\n\n this._connecting = true\n\n // HACK: We can't rely on order here, for details see https://github.com/js-platform/node-webrtc/issues/339\n const findCandidatePair = () => {\n if (this.destroyed) return\n\n this.getStats((err, items) => {\n if (this.destroyed) return\n\n // Treat getStats error as non-fatal. It's not essential.\n if (err) items = []\n\n const remoteCandidates = {}\n const localCandidates = {}\n const candidatePairs = {}\n let foundSelectedCandidatePair = false\n\n items.forEach(item => {\n // TODO: Once all browsers support the hyphenated stats report types, remove\n // the non-hypenated ones\n if (item.type === 'remotecandidate' || item.type === 'remote-candidate') {\n remoteCandidates[item.id] = item\n }\n if (item.type === 'localcandidate' || item.type === 'local-candidate') {\n localCandidates[item.id] = item\n }\n if (item.type === 'candidatepair' || item.type === 'candidate-pair') {\n candidatePairs[item.id] = item\n }\n })\n\n const setSelectedCandidatePair = selectedCandidatePair => {\n foundSelectedCandidatePair = true\n\n let local = localCandidates[selectedCandidatePair.localCandidateId]\n\n if (local && (local.ip || local.address)) {\n // Spec\n this.localAddress = local.ip || local.address\n this.localPort = Number(local.port)\n } else if (local && local.ipAddress) {\n // Firefox\n this.localAddress = local.ipAddress\n this.localPort = Number(local.portNumber)\n } else if (typeof selectedCandidatePair.googLocalAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n local = selectedCandidatePair.googLocalAddress.split(':')\n this.localAddress = local[0]\n this.localPort = Number(local[1])\n }\n if (this.localAddress) {\n this.localFamily = this.localAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n let remote = remoteCandidates[selectedCandidatePair.remoteCandidateId]\n\n if (remote && (remote.ip || remote.address)) {\n // Spec\n this.remoteAddress = remote.ip || remote.address\n this.remotePort = Number(remote.port)\n } else if (remote && remote.ipAddress) {\n // Firefox\n this.remoteAddress = remote.ipAddress\n this.remotePort = Number(remote.portNumber)\n } else if (typeof selectedCandidatePair.googRemoteAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n remote = selectedCandidatePair.googRemoteAddress.split(':')\n this.remoteAddress = remote[0]\n this.remotePort = Number(remote[1])\n }\n if (this.remoteAddress) {\n this.remoteFamily = this.remoteAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n this._debug(\n 'connect local: %s:%s remote: %s:%s',\n this.localAddress,\n this.localPort,\n this.remoteAddress,\n this.remotePort\n )\n }\n\n items.forEach(item => {\n // Spec-compliant\n if (item.type === 'transport' && item.selectedCandidatePairId) {\n setSelectedCandidatePair(candidatePairs[item.selectedCandidatePairId])\n }\n\n // Old implementations\n if (\n (item.type === 'googCandidatePair' && item.googActiveConnection === 'true') ||\n ((item.type === 'candidatepair' || item.type === 'candidate-pair') && item.selected)\n ) {\n setSelectedCandidatePair(item)\n }\n })\n\n // Ignore candidate pair selection in browsers like Safari 11 that do not have any local or remote candidates\n // But wait until at least 1 candidate pair is available\n if (!foundSelectedCandidatePair && (!Object.keys(candidatePairs).length || Object.keys(localCandidates).length)) {\n setTimeout(findCandidatePair, 100)\n return\n } else {\n this._connecting = false\n this._connected = true\n }\n\n if (this._chunk) {\n try {\n this.send(this._chunk)\n } catch (err) {\n return this.destroy(errCode(err, 'ERR_DATA_CHANNEL'))\n }\n this._chunk = null\n this._debug('sent chunk from \"write before connect\"')\n\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n // If `bufferedAmountLowThreshold` and 'onbufferedamountlow' are unsupported,\n // fallback to using setInterval to implement backpressure.\n if (typeof this._channel.bufferedAmountLowThreshold !== 'number') {\n this._interval = setInterval(() => this._onInterval(), 150)\n if (this._interval.unref) this._interval.unref()\n }\n\n this._debug('connect')\n this.emit('connect')\n })\n }\n findCandidatePair()\n }\n\n _onInterval () {\n if (!this._cb || !this._channel || this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n return\n }\n this._onChannelBufferedAmountLow()\n }\n\n _onSignalingStateChange () {\n if (this.destroyed) return\n\n if (this._pc.signalingState === 'stable') {\n this._isNegotiating = false\n\n // HACK: Firefox doesn't yet support removing tracks when signalingState !== 'stable'\n this._debug('flushing sender queue', this._sendersAwaitingStable)\n this._sendersAwaitingStable.forEach(sender => {\n this._pc.removeTrack(sender)\n this._queuedNegotiation = true\n })\n this._sendersAwaitingStable = []\n\n if (this._queuedNegotiation) {\n this._debug('flushing negotiation queue')\n this._queuedNegotiation = false\n this._needsNegotiation() // negotiate again\n } else {\n this._debug('negotiated')\n this.emit('negotiated')\n }\n }\n\n this._debug('signalingStateChange %s', this._pc.signalingState)\n this.emit('signalingStateChange', this._pc.signalingState)\n }\n\n _onIceCandidate (event) {\n if (this.destroyed) return\n if (event.candidate && this.trickle) {\n this.emit('signal', {\n type: 'candidate',\n candidate: {\n candidate: event.candidate.candidate,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n sdpMid: event.candidate.sdpMid\n }\n })\n } else if (!event.candidate && !this._iceComplete) {\n this._iceComplete = true\n this.emit('_iceComplete')\n }\n // as soon as we've received one valid candidate start timeout\n if (event.candidate) {\n this._startIceCompleteTimeout()\n }\n }\n\n _onChannelMessage (event) {\n if (this.destroyed) return\n let data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n this.push(data)\n }\n\n _onChannelBufferedAmountLow () {\n if (this.destroyed || !this._cb) return\n this._debug('ending backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n _onChannelOpen () {\n if (this._connected || this.destroyed) return\n this._debug('on channel open')\n this._channelReady = true\n this._maybeReady()\n }\n\n _onChannelClose () {\n if (this.destroyed) return\n this._debug('on channel close')\n this.destroy()\n }\n\n _onTrack (event) {\n if (this.destroyed) return\n\n event.streams.forEach(eventStream => {\n this._debug('on track')\n this.emit('track', event.track, eventStream)\n\n this._remoteTracks.push({\n track: event.track,\n stream: eventStream\n })\n\n if (this._remoteStreams.some(remoteStream => {\n return remoteStream.id === eventStream.id\n })) return // Only fire one 'stream' event, even though there may be multiple tracks per stream\n\n this._remoteStreams.push(eventStream)\n queueMicrotask(() => {\n this._debug('on stream')\n this.emit('stream', eventStream) // ensure all tracks have been added\n })\n })\n }\n\n _debug () {\n const args = [].slice.call(arguments)\n args[0] = '[' + this._id + '] ' + args[0]\n debug.apply(null, args)\n }\n}\n\nPeer.WEBRTC_SUPPORT = !!getBrowserRTC()\n\n/**\n * Expose peer and data channel config for overriding all Peer\n * instances. Otherwise, just set opts.config or opts.channelConfig\n * when constructing a Peer.\n */\nPeer.config = {\n iceServers: [\n {\n urls: [\n 'stun:stun.l.google.com:19302',\n 'stun:global.stun.twilio.com:3478'\n ]\n }\n ],\n sdpSemantics: 'unified-plan'\n}\n\nPeer.channelConfig = {}\n\nmodule.exports = Peer\n","/*! simple-websocket. MIT License. Feross Aboukhadijeh */\n/* global WebSocket */\n\nconst debug = require('debug')('simple-websocket')\nconst randombytes = require('randombytes')\nconst stream = require('readable-stream')\nconst queueMicrotask = require('queue-microtask') // TODO: remove when Node 10 is not supported\nconst ws = require('ws') // websockets in node - will be empty object in browser\n\nconst _WebSocket = typeof ws !== 'function' ? WebSocket : ws\n\nconst MAX_BUFFERED_AMOUNT = 64 * 1024\n\n/**\n * WebSocket. Same API as node core `net.Socket`. Duplex stream.\n * @param {Object} opts\n * @param {string=} opts.url websocket server url\n * @param {string=} opts.socket raw websocket instance to wrap\n */\nclass Socket extends stream.Duplex {\n constructor (opts = {}) {\n // Support simple usage: `new Socket(url)`\n if (typeof opts === 'string') {\n opts = { url: opts }\n }\n\n opts = Object.assign({\n allowHalfOpen: false\n }, opts)\n\n super(opts)\n\n if (opts.url == null && opts.socket == null) {\n throw new Error('Missing required `url` or `socket` option')\n }\n if (opts.url != null && opts.socket != null) {\n throw new Error('Must specify either `url` or `socket` option, not both')\n }\n\n this._id = randombytes(4).toString('hex').slice(0, 7)\n this._debug('new websocket: %o', opts)\n\n this.connected = false\n this.destroyed = false\n\n this._chunk = null\n this._cb = null\n this._interval = null\n\n if (opts.socket) {\n this.url = opts.socket.url\n this._ws = opts.socket\n this.connected = opts.socket.readyState === _WebSocket.OPEN\n } else {\n this.url = opts.url\n try {\n if (typeof ws === 'function') {\n // `ws` package accepts options\n this._ws = new _WebSocket(opts.url, null, {\n ...opts,\n encoding: undefined // encoding option breaks ws internals\n })\n } else {\n this._ws = new _WebSocket(opts.url)\n }\n } catch (err) {\n queueMicrotask(() => this.destroy(err))\n return\n }\n }\n\n this._ws.binaryType = 'arraybuffer'\n\n if (opts.socket && this.connected) {\n queueMicrotask(() => this._handleOpen())\n } else {\n this._ws.onopen = () => this._handleOpen()\n }\n\n this._ws.onmessage = event => this._handleMessage(event)\n this._ws.onclose = () => this._handleClose()\n this._ws.onerror = err => this._handleError(err)\n\n this._handleFinishBound = () => this._handleFinish()\n this.once('finish', this._handleFinishBound)\n }\n\n /**\n * Send text/binary data to the WebSocket server.\n * @param {TypedArrayView|ArrayBuffer|Buffer|string|Blob|Object} chunk\n */\n send (chunk) {\n this._ws.send(chunk)\n }\n\n // TODO: Delete this method once readable-stream is updated to contain a default\n // implementation of destroy() that automatically calls _destroy()\n // See: https://github.com/nodejs/readable-stream/issues/283\n destroy (err) {\n this._destroy(err, () => {})\n }\n\n _destroy (err, cb) {\n if (this.destroyed) return\n\n this._debug('destroy (error: %s)', err && (err.message || err))\n\n this.readable = this.writable = false\n if (!this._readableState.ended) this.push(null)\n if (!this._writableState.finished) this.end()\n\n this.connected = false\n this.destroyed = true\n\n clearInterval(this._interval)\n this._interval = null\n this._chunk = null\n this._cb = null\n\n if (this._handleFinishBound) {\n this.removeListener('finish', this._handleFinishBound)\n }\n this._handleFinishBound = null\n\n if (this._ws) {\n const ws = this._ws\n const onClose = () => {\n ws.onclose = null\n }\n if (ws.readyState === _WebSocket.CLOSED) {\n onClose()\n } else {\n try {\n ws.onclose = onClose\n ws.close()\n } catch (err) {\n onClose()\n }\n }\n\n ws.onopen = null\n ws.onmessage = null\n ws.onerror = () => {}\n }\n this._ws = null\n\n if (err) this.emit('error', err)\n this.emit('close')\n cb()\n }\n\n _read () {}\n\n _write (chunk, encoding, cb) {\n if (this.destroyed) return cb(new Error('cannot write after socket is destroyed'))\n\n if (this.connected) {\n try {\n this.send(chunk)\n } catch (err) {\n return this.destroy(err)\n }\n if (typeof ws !== 'function' && this._ws.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n this._debug('start backpressure: bufferedAmount %d', this._ws.bufferedAmount)\n this._cb = cb\n } else {\n cb(null)\n }\n } else {\n this._debug('write before connect')\n this._chunk = chunk\n this._cb = cb\n }\n }\n\n _handleOpen () {\n if (this.connected || this.destroyed) return\n this.connected = true\n\n if (this._chunk) {\n try {\n this.send(this._chunk)\n } catch (err) {\n return this.destroy(err)\n }\n this._chunk = null\n this._debug('sent chunk from \"write before connect\"')\n\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n // Backpressure is not implemented in Node.js. The `ws` module has a buggy\n // `bufferedAmount` property. See: https://github.com/websockets/ws/issues/492\n if (typeof ws !== 'function') {\n this._interval = setInterval(() => this._onInterval(), 150)\n if (this._interval.unref) this._interval.unref()\n }\n\n this._debug('connect')\n this.emit('connect')\n }\n\n _handleMessage (event) {\n if (this.destroyed) return\n let data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n this.push(data)\n }\n\n _handleClose () {\n if (this.destroyed) return\n this._debug('on close')\n this.destroy()\n }\n\n _handleError (_) {\n this.destroy(new Error(`Error connecting to ${this.url}`))\n }\n\n // When stream finishes writing, close socket. Half open connections are not\n // supported.\n _handleFinish () {\n if (this.destroyed) return\n\n // Wait a bit before destroying so the socket flushes.\n // TODO: is there a more reliable way to accomplish this?\n const destroySoon = () => {\n setTimeout(() => this.destroy(), 1000)\n }\n\n if (this.connected) {\n destroySoon()\n } else {\n this.once('connect', destroySoon)\n }\n }\n\n _onInterval () {\n if (!this._cb || !this._ws || this._ws.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n return\n }\n this._debug('ending backpressure: bufferedAmount %d', this._ws.bufferedAmount)\n const cb = this._cb\n this._cb = null\n cb(null)\n }\n\n _debug () {\n const args = [].slice.call(arguments)\n args[0] = '[' + this._id + '] ' + args[0]\n debug.apply(null, args)\n }\n}\n\nSocket.WEBSOCKET_SUPPORT = !!_WebSocket\n\nmodule.exports = Socket\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","/**\n * @license\n * Video.js 7.20.3 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\n'use strict';\n\nvar window = require('global/window');\nvar document = require('global/document');\nvar _extends = require('@babel/runtime/helpers/extends');\nvar keycode = require('keycode');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inheritsLoose = require('@babel/runtime/helpers/inheritsLoose');\nvar safeParseTuple = require('safe-json-parse/tuple');\nvar XHR = require('@videojs/xhr');\nvar vtt = require('videojs-vtt.js');\nvar _construct = require('@babel/runtime/helpers/construct');\nvar _inherits = require('@babel/runtime/helpers/inherits');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar window__default = /*#__PURE__*/_interopDefaultLegacy(window);\nvar document__default = /*#__PURE__*/_interopDefaultLegacy(document);\nvar _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);\nvar keycode__default = /*#__PURE__*/_interopDefaultLegacy(keycode);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inheritsLoose__default = /*#__PURE__*/_interopDefaultLegacy(_inheritsLoose);\nvar safeParseTuple__default = /*#__PURE__*/_interopDefaultLegacy(safeParseTuple);\nvar XHR__default = /*#__PURE__*/_interopDefaultLegacy(XHR);\nvar vtt__default = /*#__PURE__*/_interopDefaultLegacy(vtt);\nvar _construct__default = /*#__PURE__*/_interopDefaultLegacy(_construct);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\n\nvar version = \"7.20.3\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nvar hooks_ = {};\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\n\nvar hooks = function hooks(type, fn) {\n hooks_[type] = hooks_[type] || [];\n\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n\n return hooks_[type];\n};\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hook = function hook(type, fn) {\n hooks(type, fn);\n};\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\n\n\nvar removeHook = function removeHook(type, fn) {\n var index = hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hookOnce = function hookOnce(type, fn) {\n hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n removeHook(type, wrapper);\n return original.apply(void 0, arguments);\n };\n\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document__default['default']) {\n browserApi = apiMap[i];\n break;\n }\n} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window__default['default'].console) {\n return;\n } // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n\n\n var fn = window__default['default'].console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window__default['default'].console.info || window__default['default'].console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window__default['default'].console, args);\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log = createLogger$1('VIDEOJS');\nvar createLogger = log.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends__default['default'].apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window__default['default'].getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window__default['default'].getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window__default['default'].navigator && window__default['default'].navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window__default['default'] || window__default['default'].navigator.maxTouchPoints || window__default['default'].DocumentTouch && window__default['default'].document instanceof window__default['default'].DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document__default['default'] === window__default['default'].document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window__default['default'].parent !== window__default['default'].self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document__default['default'][method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document__default['default'].querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document__default['default'];\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document__default['default'].createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document__default['default'].body.focus();\n\n document__default['default'].onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document__default['default'].onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document__default['default'][FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document__default['default'].createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document__default['default'].getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document__default['default'].getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document__default['default'].getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window__default['default'].setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window__default['default'].removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document__default['default'].readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window__default['default'].addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document__default['default'].createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window__default['default'].WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window__default['default'].performance && window__default['default'].performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window__default['default'].WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n var old = event || window__default['default'].event;\n event = {}; // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n // Lighthouse complains if Event.path is copied\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document__default['default'];\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document__default['default'].documentElement;\n var body = document__default['default'].body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window__default['default'].addEventListener('test', null, opts);\n window__default['default'].removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window__default['default'].performance.now();\n\n var throttled = function throttled() {\n var now = window__default['default'].performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window__default['default'];\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window__default['default'].clearTimeout(oldTimeout);\n var timeout = window__default['default'].setTimeout(function () {\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData[\"delete\"](val);\n }\n });\n window__default['default'].setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase(str1) === toTitleCase(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window__default['default'].Map ? window__default['default'].Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set$1 = window__default['default'].Set ? window__default['default'].Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n var _this = this;\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n if (options.className && this.el_) {\n options.className.split(' ').forEach(function (c) {\n return _this.addClass(c);\n });\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set$1();\n this.setIntervalIds_ = new Set$1();\n this.rafIds_ = new Set$1();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose(options) {\n if (options === void 0) {\n options = {};\n }\n\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this2 = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this2.options_.playerOptions; // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n\n var newChild = _this2.addChild(name, opts);\n\n if (newChild) {\n _this2[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this2.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping.\n if (!keycode__default['default'].isEventKey(event, 'Tab')) {\n event.stopPropagation();\n }\n\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window__default['default'].performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window__default['default'].performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this3 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window__default['default'].setTimeout(function () {\n if (_this3.setTimeoutIds_.has(timeoutId)) {\n _this3.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window__default['default'].clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window__default['default'].setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window__default['default'].clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window__default['default'].requestAnimationFrame(function () {\n if (_this4.rafIds_.has(id)) {\n _this4.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this5 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this5.namedRafs_.has(name)) {\n _this5.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window__default['default'].cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this6 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this6[idName].forEach(function (val, key) {\n return _this6[cancelName](key);\n });\n });\n _this6.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent.prototype.supportsRaf_ = typeof window__default['default'].requestAnimationFrame === 'function' && typeof window__default['default'].cancelAnimationFrame === 'function';\nComponent.registerComponent('Component', Component);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\n\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n var timeRangesObj;\n\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n\n if (window__default['default'].Symbol && window__default['default'].Symbol.iterator) {\n timeRangesObj[window__default['default'].Symbol.iterator] = function () {\n return (ranges || []).values();\n };\n }\n\n return timeRangesObj;\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose__default['default'](ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document__default['default'].activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode__default['default'].isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode__default['default'].isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document__default['default'].activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window__default['default'].HTMLAnchorElement || child instanceof window__default['default'].HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window__default['default'].HTMLInputElement || child instanceof window__default['default'].HTMLSelectElement || child instanceof window__default['default'].HTMLTextAreaElement || child instanceof window__default['default'].HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window__default['default'].HTMLIFrameElement || child instanceof window__default['default'].HTMLObjectElement || child instanceof window__default['default'].HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose__default['default'](TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized__default['default'](_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose__default['default'](AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose__default['default'](VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized__default['default'](_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose__default['default'](TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose__default['default'](Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized__default['default'](_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized__default['default'](_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n // This entire method can be replace with URL once we are able to drop IE11\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document__default['default'].createElement('a');\n a.href = url; // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window__default['default'].location.protocol;\n }\n /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window__default['default'].location.host;\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n // add the url to an anchor and let the browser parse the URL\n var a = document__default['default'].createElement('a');\n a.href = url;\n url = a.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window__default['default'].location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window__default['default'].WebVTT.Parser(window__default['default'], window__default['default'].vttjs, window__default['default'].WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window__default['default'].console && window__default['default'].console.groupCollapsed) {\n window__default['default'].console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log.error(error);\n });\n\n if (window__default['default'].console && window__default['default'].console.groupEnd) {\n window__default['default'].console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR__default['default'](opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window__default['default'].WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose__default['default'](TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n _this.timeupdateHandler = bind(_assertThisInitialized__default['default'](_this), function (event) {\n if (event === void 0) {\n event = {};\n }\n\n if (this.tech_.isDisposed()) {\n return;\n }\n\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.stopTracking();\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.startTracking();\n }\n\n Object.defineProperties(_assertThisInitialized__default['default'](_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.stopTracking();\n\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized__default['default'](_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n\n var _proto = TextTrack.prototype;\n\n _proto.startTracking = function startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler); // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n\n this.tech_.on('timeupdate', this.timeupdateHandler);\n };\n\n _proto.stopTracking = function stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n ;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window__default['default'].vttjs && !(originalCue instanceof window__default['default'].vttjs.VTTCue)) {\n cue = new window__default['default'].vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose__default['default'](AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized__default['default'](_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose__default['default'](VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized__default['default'](_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose__default['default'](HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized__default['default'](_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized__default['default'](_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends__default['default']({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose__default['default'](Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n };\n\n _this.queuedHanders_ = new Set(); // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window__default['default'].WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document__default['default'].body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt__default['default']) && Object.keys(vtt__default['default']).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document__default['default'].createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window__default['default'].WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window__default['default'].Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'